Неправильная кодировка perl в Foswiki
Я использую Foswiki и столкнулся с действительно странной проблемой. Я использую сервер LDAP для аутентификации людей, и обнаружил, что записи с китайским языком кодируются в utf-8, даже если это уже utf-8. Вот что я сделал
- Я запускаю тестовые коды в командной строке и получаю правильный вывод
$str = "程洋" # это китайские слова print STDERR "string is $ str";
$ str = ~ s /(.)/ sprintf ("0x% x", ord ($ 1)) / например;
выведите STDERR "строка hex is $str";
->程洋
->0xe7 0xa8 0x8b 0xe6 0xb4 0x8
Я не могу использовать code sample
в этих кодах кажется, что строковое выражение сбивает с толку уценку system.sorry для этого.
- Я запускаю те же коды в системе плагинов 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
, вещи на веб-странице также будут отображаться, как это, и приведут к путанице кодов любых китайских слов, почему?
1 ответ
Похоже, это связано с вопросом поддержки 1817 http://foswiki.org/Support/Question1817.
У меня нет опыта работы с поддержкой utf-8 в Foswiki, и я не знаю никого, кто бы это сделал.
Предлагаем вам разместить свой вопрос на Foswiki-discuss@lists.sourceforge.net. И заявить:
- Версия Foswiki
- версия perl
- версия apache
- операционная система
Это может быть передано кому-то с нужными навыками.