在Foswiki中perl编码错误

时间:2016-09-08 12:51:38

标签: perl encoding utf-8 foswiki

我使用Foswiki并遇到了非常奇怪的问题。我使用LDAP服务器对人进行身份验证,发现中文条目编码为utf-8,即使它已经是utf-8。这就是我做的事情

  1. 我在命令行中运行此测试代码,并获得正确的输出
  2.   

    $ str ="程洋" #他们是中文单词print STDERR" string是$ str&#34 ;;

         

    $ str = ~s /(.)/ sprintf(" 0x%x",ord($ 1))/ eg;

         

    print STDERR" string hex是$ str&#34 ;;

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

    我无法在这些代码上使用code sample,似乎字符串表达式会混淆markdown system.sorry。

    1. 我在由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
    2. 正如您所看到的,单词会被转换为类似网址的字符串,如果它0xe7\xa8\x8b\xe6\xb4\x8b那么我认为它没问题,但是它们被编码为utf-8即使它已经是utf-8,但是十六进制仍然可以。它不仅发生在print,网页上的内容也会像这样显示并导致任何中文单词的乱码,为什么?

1 个答案:

答案 0 :(得分:0)

这似乎与支持问题1817 http://foswiki.org/Support/Question1817有关。

我对Foswiki的utf-8支持没有经验,也不认识任何人。

建议您在Foswiki-discuss@lists.sourceforge.net上发布您的问题。 并声明:

  • Foswiki版
  • perl版本
  • apache version
  • 操作系统

它可能会传播给具有合适技能的人。