2011-06-10 5 views
2

У меня вопрос кодирования и хотел бы попросить о помощи. Я замечаю, что в качестве кодировки я выбираю «UTF-8», есть (по крайней мере) две двойные кавычки " и . Но когда я выбираю «ISO-8859-1» в качестве кодировки, я вижу, что последняя двойная кавычка становится ¡°, или иногда, например, “.вопрос кодирования в perl

Не могли бы вы объяснить, почему это так? Как можно совместить и заменить его на " с помощью regexp в perl?

Большое спасибо.

+2

Определить «чтобы выбрать UTF-8 в качестве кодировки». Вы имеете в виду 'use utf8' для исходного кода или' use open qw (: std: utf8) 'для потоков или вообще что-то еще? – tchrist

+0

См. Также [этот ответ] (http://stackoverflow.com/questions/6162484/why-does-modern-perl-avoid-utf-8-by-default/6163129#6163129). – tchrist

ответ

3

ISO-8859-1 - кодировка по одному байту на символ. Необычные двойные кавычки Unicode не входят в набор символов ISO-8859-1. Итак, вы видите многобайтовый символ, представленный как последовательность байтов ISO-8859-1.

Чтобы сопоставить эти странные вещи, см. Справочную страницу perlunicode, особенно escape-последовательности \ x {...} и \ N {...}.

Чтобы ответить на ваш вопрос, попробуйте \ x {201C} в соответствии с Unicode LEFT DOUBLE QUOTATION MARK и \ x {201D}, чтобы соответствовать ПРАВИЛЬНОЙ ДВОЙНОЙ ЦЕЛЕВОЙ ЦВЕТЕ. Вы пропустили последнее в своем вопросе :-).

[обновление]

мне предоставили мою ссылку ... Некоторые хороший джентльмен в Великобритании есть страница на ASCII and Unicode quotation marks. Простая валидная двойная кавычка ASCII/ISO-8859-1 называется QUOTATION MARK.

+0

Благодарим вас за ответ. :) Итак, каково название другой простой двойной кавычки? –

+0

только ЦЕНА ЗАМКИ U + 0022? –

+0

@ Qiang: Да. Я добавил обновление со ссылкой, которую я должен был включить в первую очередь. – Nemo

Смежные вопросы