Martin Barth schreef:

> [use encoding]
> If I understand you right, following code should allways create a utf8
> encoded file.

No, "use encoding" is about the encoding of your script, not about file
IO.

<quote src="encoding">
encoding - allows you to write your script in non-ascii or non-utf8
</quote>


> Since my inputfile does only contain 7bit ascii data.
> and STDIN STDOUT and STDERR is changed to utf8.
>
> % perl -C7 -wpi -e 'use encoding "utf8"; s/"o/ö/' datei

In that case, your -C7 could be -C4 or -CE, because STDIN and STDOUT are
already handled by the "encoding" pragma, see again `perldoc encoding`.

But you missed the 8+16 (i+o). See `perldoc perlrun`.

The C<use encoding "utf8"> could be done through -M. But you don't need
"encoding".

So better write it as

  perl -Cio -wpi -e 's/"o/\x{f6}/' datei

(or -CIOEio, which is -C31)


> % file datei
> datei: ISO-8859 text

Why not "ASCII text"? Are you sure there are no 8 bit values in there?
(Maybe you forgot to put the original file back, consider "-i.bak".)


> % hexdump  -C datei
> 00000000  65 69 6e 65 20 74 65 73  74 20 64 61 74 65 69 0a
> |eine test datei.|
> 00000010  64 69 65 20 22 75 20 f6  20 0a
> |die "u . .|
>
> f6 = ö in lation1
> c3 b6 = ö in utf8


$ file datei
datei: ASCII text


$ hexdump -e '"%07_ad"  16/1 " %02X" "\n"'
          -e '"       " 16/1 " %-2_p" "\n\n"' datei

0000000 65 69 6E 20 74 65 73 74 20 64 61 74 65 69 0A 64
        e  i  n     t  e  s  t     d  a  t  e  i  .  d

0000016 69 65 20 22 75 20 22 6F 0A
        i  e     "  u     "  o  .


$ perl -C31 -i.bak -wpe 's/"o/\x{f6}/g' datei


$ hexdump -e '"%07_ad"  16/1 " %02X" "\n"' \
          -e '"       " 16/1 " %-2_p" "\n\n"' datei

0000000 65 69 6E 20 74 65 73 74 20 64 61 74 65 69 0A 64
        e  i  n     t  e  s  t     d  a  t  e  i  .  d

0000016 69 65 20 22 75 20 C3 B6 0A
        i  e     "  u     .  .  .

-- 
Affijn, Ruud

"Gewoon is een tijger."


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to