[jcifs] [joed@interlude.eu.org: Re: secrets.tdb in the wrong place]

Michael B. Allen mballen at erols.com
Tue Sep 25 09:56:42 EST 2001


On Mon, Sep 24, 2001 at 02:44:10AM +0200, Luke Kenneth Casson Leighton wrote:
> what u guys do? :)

Use the source Luke.

Seriously. We funnel everything through static serialization routines in:

http://auditorymodels.org/jcifs/src/src/jcifs/smb/ServerMessageBlock.java

But this just handles alignment, the useUnicode flag, and presents a
very general interface interface; String readString( byte[] src, int
srcIndex ). The real work is handled by Java as Joe points out "quite
nicely". To encode it's just:

byte[] bytes = str.getBytes( "UnicodeLittleUnmarked" );

and to decode its:

str = new String( src, srcIndex, len, "UnicodeLittle" );

Trivial, by comparison to iconv or xICU.

> Luke Kenneth Casson Leighton wrote:
> 
> > so, data comes in off-wire in unicode-16.  it gets
> > converted using iconv.  then, data goes out, but it has
> > to go out in unicode-16, so gets converted again.
> 
> Personally I like Java, and Java handles unicode quite nicely :-))).
> I wonder how Jcifs unicode stuff is handled, do they use it natively or convert
> it?
> 
> Joe.

Incedentally, on the subject of decoding and encoding Unicode strings in
c, I have prepared a package that attempts to abstact the particulars
on top of iconv. The CIFS encoding is UCS-2LE (although Peter Anvin
on linux-utf8 thought it was UTF-16LE so I'm not sure). This package
normalizes these encodings to wchar_t. It's here:

http://auditorymodels.org/encdec/

It also, handles times and of course integers. It's not perfect, but it's
a start and at lease separates the peas and carrots. Most people don't
like wchar_t for some reason, but tell me a better internal representation
with a portable set of string functions and I'll listen.

Mike




More information about the jcifs mailing list