Das Paragraph-Zeichen im UTF und ISO WIrrwar unter Perl

Mit einem Einzeiler kann man z.B. mit Perl und einem simplen regulären Ausruck Zeichen und Zeichenketten ersetzen. Jetzt habe ich recht lange gebraucht um mir das wieder nach langer Zeit vor Augen zu führen.

Ich dachte ein Paragraph-Zeichen § ist in einem simplen Bash-Skript schnell ersetzt mit:

perl -p -i -e 's/§/§/g' $1

Ist es aber nicht. Das Teil macht nix. Auch ein Maskieren mit \§ macht in meinem Fall nichts.

–> Mit ‘od’ oder einem anderen Tool geschaut wie das Zeichenencoding ist: 247 (octal) = 167 (dezimal) = A7 (hexadezimal)

Was “fast” ging ist:

perl -p -i -e 's/\xA7/§/g' $1

Nun sagt mit ‘xmllint’ aber:

parser error : Input is not proper UTF-8, indicate encoding !

Bytes: 0xC2 0x26 0x23 0x31

Nochmal schauen: Da ist ein seltsames Zeichen hinzugekommen. Vermutlich liegt es daran, dass ich Perl nicht sauber mitgebe wie es sich mit entsprechendem Encoding verhalten soll.

In diesem Fall pragmatisch gelöst mit zusätzlichem:

perl -p -i -e 's/\xC2//g' $1

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Time limit is exhausted. Please reload CAPTCHA.