Erland Sommarskog schrieb am 17.01.2011 um 13:57 (-0000):
> I'm on Windows and I have this small script:
> 
>    use strict;
>    open F, '>:encoding(UTF-16LE)', "slask2.txt";
>    print F "1\n2\n3\n";
>    close F;
> 
> When I open the output in a hex editor I see
> 
>   31 00 0D 0A 00 32 00 0D 0A 00 33 0D 0A 00

In other words (od -c):

    1  \0  \r  \n  \0   2  \0  \r  \n  \0   3  \0  \r  \n  \0

> I would expect to see:
> 
>   31 00 0D 00 0A 00 32 00 0D 00 0A 00 33 0D 00 0A 00

Guess you would even expect:

    …                                   33 00 OD 00 OA 00

> That is, I expect \n to be translated to 0D 00 0A 00, now it is
> translated to three bytes.

It looks like a bug to me. I'm getting the same result as you for:

* ActivePerl 5.10.1
* ActivePerl 5.12.1
* Strawberry 5.12.0

All three participants show correspondingly wrong results for UTF-16BE.
And also for UTF-16, which just adds the BOM.

Perl/Cygwin 5.10.1 does fine because its OS is "cygwin", so it doesn't
translate "\n" to CRLF.

-- 
Michael Ludwig

Reply via email to