在yii中使用utf8字符和htmlspecialchars时出错

Add*_*dev 5 html php utf-8 character-encoding yii

我在yii中遇到char编码问题.如果我创建一个新的webapp:

 ./Yii-framework/framework/yiic webapp MyTest
Run Code Online (Sandbox Code Playgroud)

然后转到/protected/views/layouts/main.php并将页脚更改为带有utf8字符的文本,例如

<div id="footer">
        Cópyrîgth <br />
</div>
Run Code Online (Sandbox Code Playgroud)

刷新页面,一切正常.太好了!;)

然后我尝试使用用户名中的utf8字符登录,例如ádmin,它崩溃说:

Error 500

htmlspecialchars(): Invalid multibyte sequence in argument
Run Code Online (Sandbox Code Playgroud)

所以我在yii中检查了这篇关于unicode的文章

然后我去了/protected/config/main.php并在开头添加了这一行:

header('Content-Type: text/html; charset=utf-8');
Run Code Online (Sandbox Code Playgroud)

再次重试相同的登录它可以工作(不会崩溃),但现在页脚被破坏并显示:

C?pyr?ght
Run Code Online (Sandbox Code Playgroud)

我已经尝试了其他组合,如"在yii中的Unicode"文章中所解释的那样,但它们都没有让两件事同时工作.

解决这个问题的任何想法?

注意:我无法更改为php.ini文件.

我还尝试了.htaccess文件中的AddDefaultCharset UTF-8选项并将其放在/ MyTest /的文件夹中,是文章中引用的正确文件夹:您的DocumentRoot

谢谢

goa*_*oat 6

我对yii并不熟悉,但是,如果要将文字unicode字符粘贴到文件中,则需要确保文本编辑器使用unicode编码保存文件,例如utf8.尝试utf8,没有BOM.

我的经验是,当您更改编码设置并且其中已经编码了字符时,文本编辑器会表现得很奇怪.重新开始使用新文件,更改编码,然后粘贴字符.