mysql – 当一切都已经是UTF-8时,为什么还需要Encode :: decode(‘UTF-8’,$var)?

在Webapp中,我坚持尝试将所有内容保存在UTF-8中:

>数据库(CHARSET = utf8)
>源文件(使用utf8;用utf8编写)
>模板(对于Template Toolkit,使用ENCODING => utf8)
>用户输入和输出(HTTP中的charset = utf8标头,用于STDIN和STDOUT的binmode:utf8)

但是我仍然需要对来自数据库的数据使用Encode :: decode(‘UTF-8’,$data),否则它们会被双重编码或以某种方式被破坏.

为什么是这样?我该如何摆脱这个烦人的额外步骤?难道没有办法只保留一切,每次都是UTF-8,而不必手动转换任何东西?

解决方法:

您可能会发现这两个线程很有趣:

Why does modern Perl avoid UTF-8 by default?

How well does your language support unicode in practice?

上一篇:mysql – CGI语言选择


下一篇:javascript – 是否可以触发文件下载到用户的浏览器?