私は Foswiki を使用していますが、本当に奇妙な問題に遭遇しました。LDAP サーバーを使用して人を認証していますが、中国語を含むエントリは、既に utf-8 であっても utf-8 にエンコードされていることがわかりました。これが私がしたことです
- このテストコードをコマンドラインで実行すると、正しい出力が得られます
$str = "程洋" #they're Chinese words print STDERR "string is $str";
$str =~ s/(.)/sprintf("0x%x ",ord($1))/eg;
print STDERR "string hex is $str";
->程洋
->0xe7 0xa8 0x8b 0xe6 0xb4 0x8
これらのコードでは使用できませんcode sample
。文字列式がマークダウン システムを混乱させているようです。申し訳ありません。
- この環境では、apache2 によって保持されている Foswiki プラグイン システムで同じコードを実行すると、
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
ています。だけでなくprint
、ウェブページの内容もこのように表示され、中国語の単語の混乱コードが発生します。なぜですか?