igor, maybe this is related to
http://code.google.com/p/pharo/issues/detail?id=6565
?


On Tue, Aug 28, 2012 at 2:35 PM, Igor Stasenko <siguc...@gmail.com> wrote:

> or it was like that from the birth??
>
> arrrrgghhhh...
>
> | stream |
> stream := WriteStream on: (ByteArray new: 100).
>
> UTF8TextConverter new nextPut: (Character value: 129 ) toStream: stream.
>
> stream contents
>  #[129]
>
> This is WRONG! RTFM, about utf8 encoding, please! :)
>
> ---------
>
> nextPut: aCharacter toStream: aStream
>         | leadingChar nBytes mask shift ucs2code |
>         aStream isBinary ifTrue: [^aCharacter storeBinaryOn: aStream].
>
> in my case, stream is binary, so it goes directly to #storeBinaryOn:
>
> storeBinaryOn: aStream
>         "Store the receiver on a binary (file) stream"
>         value < 256
>                 ifTrue:[aStream basicNextPut: value]
>                 ifFalse:[aStream nextInt32Put: value].
>
> This is not even close to UTF8.
> If character code is less than 256, it will store a single byte (wtf?),
> and if more than that, it will store 32-bit integer value in
> big-endian order (wtf raisedToPower: 2)..
>
> i wonder , for what purpose we actually having this code path? this
> stuff is completely useless.
> according to implementation of storeBinaryOn:
> there's no way how you can read the same character value back.
> because it can be 1 byte or 4 bytes.. but you simply cannot determine
> which one.
> this is one of the reasons we using utf8 encoding, btw ;)
>
> --
> Best regards,
> Igor Stasenko.
>
>


-- 
Mariano
http://marianopeck.wordpress.com

Reply via email to