Согласно XML :: LibXML, значение 'müller' eq 'müller'
равно true или false, зависит от того, как строки были сохранены внутри.Это ошибка.В частности, присвоение значения флагу UTF8 известно как «Ошибка Unicode», и документ XML :: LibXML документирован, чтобы сделать именно это в разделе «Поддержка кодирования» этой страницы .
Ошибка известна , но ее нельзя исправить чисто по причинам обратной совместимости.Perl предоставляет два инструмента для работы с экземплярами ошибки Unicode:
utf8::upgrade( $sv ); # Switch to the UTF8=1 storage format
utf8::downgrade( $sv ); # Switch to the UTF8=0 storage format
Первый из них будет подходящим инструментом для использования здесь.
sub _up { my ($s) = @_; utf8::ugprade($s); $s }
$tag_color->appendTextNode( _up $hash{$name} );
Примечание: Вы можете использовать utf8::upgrade
даже если вы не делаете use utf8;
.Используйте use utf8;
только если ваш исходный код UTF-8.