Запутался в perl's Entities.pm - PullRequest
2 голосов
/ 14 декабря 2010

Хорошо, я немного запутался.

Я пытаюсь создать фид для приложения для iPhone, закодированного в utf8.

Есть много латинских символов (accute и т. Д.)для нашего испанского контента.Я использую функцию decode_entities из библиотеки Entities.pm, но я замечаю, что значения char, в которые он преобразуется, нарушают мой фид. Я имею в виду, что фид недействителен, хотя вокруг него есть теги CDATA.поле заголовка.После дальнейшего изучения я обнаружил, что эта библиотека преобразуется из html-сущности в соответствующее ей значение Unicode, но она использует ISO-8859 вместо utf8.

Как преобразовать html-сущность вutf8?

Ответы [ 2 ]

4 голосов
/ 14 декабря 2010
use Encode;
use HTML::Entities;

my $x = decode_utf8(decode_entities("α — ω"));

binmode STDOUT, ":utf8";
print $x;

(Вы получите предупреждение "широкие символы при печати", если напечатаете $ x напрямую).

1 голос
/ 14 декабря 2010

Получается, что проблема была не в Entities.pm, а в формате, который я использовал для открытия файла.Я считал само собой разумеющимся, что Perl автоматически откроет файл в Utf-8.

Я добавил строку ниже в начало моего файла, и канал теперь считается действительным:

useopen ': encoding (utf8)';

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...