Ошибочная форма символа UTF-8 в регулярном выражении в Perl - PullRequest
1 голос
/ 06 июля 2010

У меня ошибка 'Неправильный символ UTF-8', когда я помещаю некоторые скалярные данные в XML :: Simple или Data :: Dumper.В строках, где возникает ошибка, есть регулярные выражения.

Malformed UTF-8 character (fatal) at /usr/share/perl5/XML/Simple.pm line 1690.
Malformed UTF-8 character (fatal) at /usr/lib/perl/5.10/Data/Dumper.pm line 682.

В настоящий момент мне не удалось воспроизвести ошибку с помощью небольшого фрагмента кода.

XML::Simple 2.18
Data::Dumper 2.124
perl v5.10.1

Ответы [ 3 ]

2 голосов
/ 09 июля 2010

Проблема возникла из-за того, что где-то глубоко в коде приложения был Encode::_utf8_on со скаляром, который не был правильной строкой UTF-8.

1 голос
/ 06 июля 2010

Вы можете попробовать передать данные через Encoding :: FixLatin . Если «двоичные» байты, с которыми вы сталкиваетесь, на самом деле являются символами Latin-1, они будут преобразованы в действительный UTF8. Если они действительно являются случайными двоичными байтами, то они должны быть по крайней мере преобразованы в случайные (но действительные) символы UTF8: -)

0 голосов
/ 06 июля 2010

Базовый модуль кодирования предоставляет средства для Обработки искаженных данных . Я никогда не использовал их сам, однако.

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