【发布时间】:2012-06-14 19:57:15
【问题描述】:
我在 yii 中的字符编码有问题。 如果我创建一个新的 webapp:
./Yii-framework/framework/yiic webapp MyTest
然后转到/protected/views/layouts/main.php,将页脚更改为带有utf8字符的文本,例如
<div id="footer">
Cópyrîgth <br />
</div>
刷新页面,一切正常。好的! ;)
然后我尝试使用用户名中的 utf8 字符登录,例如 áadmin,它崩溃说:
Error 500
htmlspecialchars(): Invalid multibyte sequence in argument
所以我查看了这篇关于unicode in yii的文章
然后我去了 /protected/config/main.php 并在开头添加了这一行:
header('Content-Type: text/html; charset=utf-8');
再次重试相同的登录它可以工作(不会崩溃)但现在页脚已损坏并显示:
C�pyr�ght
我尝试了其他组合,如“yii 中的 Unicode”一文中所述,但它们都不能同时工作。
有解决这个问题的想法吗?
注意:我无法更改为 php.ini 文件。
我还尝试了 .htaccess 文件中的 AddDefaultCharset UTF-8 选项,并将其放在 /MyTest/ 的文件夹中,文章中提到的正确文件夹为:您的 文档根 ?
谢谢
【问题讨论】:
-
我遇到了同样的问题。你找到解决方案了吗?
-
那些问号是无效 UTF-8 字节序列的结果。很可能您正在使用以单字节编码保存文本的编辑器,例如ISO 8859-1。在所有作为 ASCII 扩展的单字节编码中,扩展部分的字节值 >= 128。UTF-8 的所有单字节字符均 = 128 的字节组成。这就是为什么带有变音符号的 ISO 8859-x 字符变成了问号:它们永远不可能是有效的 UTF-8,除非是不太可能的组合。
标签: php html utf-8 character-encoding yii