Как конвертировать специальные символы в UTF-8? - PullRequest
5 голосов
/ 09 марта 2012

Когда я извлекаю данные из базы данных MySQL, некоторые выходные данные имеют специальные символы, при открытии, например, в emacs, они декодируются в \240 и \346.

Когда отображаются в терминале UTF-8специальные символы отображаются как

Таким образом, используемые швы кодирования используют только 1 байт на символ.

Например, я вижу, что \346 должно быть æ.

Вопрос

Есть ли в Perl модуль, который может кодировать эти специальные символы в UTF-8?

1 Ответ

3 голосов
/ 09 марта 2012

Используйте Encode::decode для декодирования ваших данных из любой кодировки во внутренний формат Perl.

Затем, при записи данных в файл, установите слой 'utf8', чтобы данные были записаныв UTF-8.

use Encode;

my $data_from_database = ...;

my $perl_data = decode('ISO-8859-1', $data_from_database);

binmode STDOUT, ':utf8';

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