我正在尝试此代码(在我的本地网络服务器上)
<?php
echo 'the word is / думата е '.$_GET['word'];
?>
但输入时会导致结果损坏?word =проба
the word is / думата е ����
文档保存为“UTF-8无BOM”,标题也是UTF-8。 我尝试过urlencode()和urldecode(),但效果相同。 在网络服务器上传时,效果正常......
答案 0 :(得分:3)
如果您尝试发送HTTP Content-type
标头,以指示浏览器您的网页正在生成哪个编码/字符集,该怎么办?
例如,这样的事情可能会有所帮助:
header('Content-type: text/html; charset=UTF-8');
echo 'the word is / думата е '.$_GET['word'];
当然,如果你正在生成HTML - 你可能就是。
考虑到服务器级别的配置设置定义了默认发送的编码,也许服务器上的默认编码是正常的 - 而本地服务器上的默认编码不是。
自己发送这样的标题可以解决问题:它可以确保编码始终设置正确。
答案 1 :(得分:2)
我想您正在使用Apache Web服务器。
Apache配置存在一个常见问题 - 配置中带有“AddDefaultCharset”的行应该被注释掉(在行的开头添加#,或者用“AddDefaultCharset off”替换行)因为它“覆盖任何” meta http-equiv或xml编码标签中的文件中给出的编码“。
在我当前的安装(Apache2 @ Ubuntu Linux)中,该行可在“/etc/apache2/conf.d/charset”中找到,但在其他(Linux / Unix)设置中可以在“/ etc / apache2 / httpd”中找到。 conf“,或”/etc/apache/httpd.conf“(如果您使用的是Apache 1)。如果您在这些文件中找不到它,可以使用“cd / etc / apache2; grep -r AddDefaultCharset *”(对于Apache 2 @ Unix / Linux)进行搜索。
答案 2 :(得分:0)
如果您从AJAX收到$ _GET,请确保您的UTF-8编码的blablabla.js文件。您也可以使用iconv("cp1251","utf8",$_GET['word']);
以UTF-8显示$ _GET ['word']
答案 3 :(得分:0)
看看Changing the server encoding。读起来很棒!
干杯!
答案 4 :(得分:0)
我刚遇到问题,如果你用htmlentities()过滤GET变量,有时会发生这种情况。似乎这个函数将西里尔字符转换成奇怪的东西。