Мой сценарий Perl и файл ввода данных находятся в китайской кодировке BIG5.
Строковые данные содержат объект HTML, например. японские иероглифы
Результат отлично отображается при просмотре в браузере.
Но для дальнейших манипуляций с данными мне нужно преобразовать их все в UTF-8.
eg.
Из кодировки BIG5
一と三
В кодировку UTF-8
一と三
Вот код, который я пробовал:
#!/usr/local/bin/perl
use Encode qw/encode decode/;
use HTML::Entities;
print "Content-type: text/html\n\n";
$str = "と";
$str = encode('utf8', decode("big5",$str));
print "$str\n";
decode_entities($str);
print "$str\n";
$str2 = "一と三";
$str2 = encode('utf8', decode("big5",$str2));
print "$str2\n";
decode_entities($str2); # where the issue is
print "$str2\n";
Вот результат после запуска вышеуказанного кода.
と
と
一と三
ä¸とä¸
Обратите внимание, что сам скрипт также сохраняется в кодировке BIG5.
После decode_entities($str2); кажется, что он также пытается декодировать китайские символы в UTF-8, что и вызывает проблему.
Как решить эту проблему? Или ограничиться применением decode_entities() только к шаблону &xxxxx;?