Застрял с UTF-8, используя API в Perl - PullRequest
4 голосов
/ 22 мая 2011

Что-то новое в Perl. Я использую веб-API Perl для получения данных. Ошибка «application / xml; charset = UTF-8». Я использовал «use utf8», но, похоже, не работает. Застрявшая строка выглядит примерно так

my @candidates = $c->bookmarks_for(start => 1, tag =>'pubmed');

Можете ли вы помочь мне.

Спасибо, Отжимают

1 Ответ

11 голосов
/ 22 мая 2011

use utf8;

только (и только) для одной вещи.Когда вы будете использовать в своем исходном коде utf8 символов.Например:

my $utf8str = "αΩ";

Для любых других значений, например:

my $data = MyModule::get_some_data();

, следует использовать

my $utf8data = Encode::decode_utf8($data);

В случае, когда ваши get_some_data возвращают октеты(байты).

Например, при чтении текстовых файлов вы можете указать преобразование perl utf8 на уровне ввода-вывода с помощью,

open($fd, "<", $filename);
$fd->binmode(:utf8); #for marking data as utf8, or
$fd->binmode(:encoding(utf8)); #for marking *and* checking data for utf8 validity too.

Или вы можете использовать открытую прагму для передачи perl с использованием utf8.по умолчанию на уровне ввода-вывода

use open(:std :utf8);

Здесь нет короткого ответа.Вы действительно должны читать:

Perl чрезвычайно силен в обработке utf8, но вы должны знать, как правильно его использовать - к сожалению, вотнет более короткого пути, чем RTFM ...

И обратите внимание: здесь есть различия в обработке utf8 в perl <5.6, 5.6, 5.8, 5.12, 5.14 ... </p>

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