Codierungsfrage in Perl
Frage
Ich habe eine Codierungsfrage und möchte um Hilfe bitten. Ich bemerke, wenn ich "UTF-8" als Codierung wähle, gibt es (zumindest) zwei Doppelzitate "
und “
. Aber wenn ich "ISO-8859-1" als Codierung wähle, sehe ich, dass das letztere doppelte Zitat wird ¡°
, oder manchmal zum Beispiel “
.
Könnte jemand bitte erklären, warum dies der Fall ist? Wie kann man übereinstimmen “
und ersetzen Sie es durch "
Verwenden Sie Regexp in Perl?
Danke vielmals.
Lösung
ISO-8859-1 ist eine Ein-Byte-pro-Charakter-Codierung. Die ausgefallenen Unicode-Doppelquoten befinden sich nicht im ISO-8859-1-Charakter-Set. Was Sie also sehen, ist ein Multi-Byte-Charakter, das als Abfolge von ISO-8859-1 Bytes dargestellt wird.
Um diese seltsamen Dinge zu entsprechen, sehen Sie das Perlunicode Mann Seite, insbesondere die x {...} und n {...} Escape -Sequenzen.
Um Ihre Frage zu beantworten, versuchen Sie es mit x {201c} mit der linken Doppelzitat -Marke von Unicode und x {201d} mit der rechten Doppelzitat -Marke überein. Sie haben letztere in Ihrer Frage verpasst :-).
aktualisieren
Ich hätte meine Referenz geben sollen ... ein netter Herr in Großbritannien hat eine Seite auf ASCII- und Unicode -Anführungszeichen. Die einfache Vanille-ASCII/ISO-8859-1 Doppelquote wird nur als Zitatmark bezeichnet.
Andere Tipps
Vielleicht das Old post
wird helfen ..