Неправильная кодировка perl в Foswiki

Я использую Foswiki и столкнулся с очень странной проблемой. Я использую сервер LDAP для аутентификации людей, и найденные записи с китайским кодируются в utf-8, даже если это уже utf-8. Вот что я сделал

  1. Я запускаю эти тестовые коды в командной строке и получаю правильный результат

$str = "程洋" #это китайские слова print STDERR "string is $str";

$str =~ s/(.)/sprintf("0x%x",ord($1))/например;

print STDERR "шестнадцатеричная строка равна $str";

->程洋
->0xe7 0xa8 0x8b 0xe6 0xb4 0x8

Я не могу использовать code sample в этих кодах, кажется, что строковое выражение сбивает с толку систему уценки. Извините за это.

  1. Я запускаю те же коды в системе плагинов Foswiki, которая поддерживается apache2, в этой среде print STDERR будет автоматически перенаправляться в /var/log/apache2/error.log, на этот раз я получаю такой вывод ->\xc3\xa7\xc2\xa8\xc2\x8b\xc3\xa6\xc2\xb4\xc2\x8b ->0xe7 0xa8 0x8b 0xe6 0xb4 0x8b

Как видите, слова экранированы в строку, подобную URL-адресу, если это 0xe7\xa8\x8b\xe6\xb4\x8b, то я думаю, что все в порядке, но они снова закодированы в utf-8, даже если это уже utf-8, но шестнадцатеричный все еще в порядке. Это случилось не только с print, вещи на веб-странице также будут отображаться таким образом и приводить к путанице кодов любых китайских слов, почему?


person demonguy    schedule 08.09.2016    source источник


Ответы (1)


Похоже, это связано с вопросом службы поддержки 1817 http://foswiki.org/Support/Question1817.

У меня нет опыта работы с поддержкой utf-8 в Foswiki, и я не знаю никого, у кого бы он был.

Предлагаем разместить свой вопрос на [email protected]. И заявить:

  • Фосвики-версия
  • перл-версия
  • версия апача
  • Операционная система

Он может быть передан кому-то с нужными навыками.

person BvO    schedule 21.09.2016