Php $\u cyrillic文本存在编码问题

Php $\u cyrillic文本存在编码问题,php,encoding,Php,Encoding,我正在尝试此代码(在本地web服务器上) 文档另存为“不带BOM的UTF-8”,标题也为UTF-8。 我尝试过urlencode()和urldecode(),但效果相同。 将其上载到web服务器时,工作正常…如果尝试发送HTTP内容类型头,以指示浏览器正在生成页面的编码/字符集,该怎么办 例如,类似这样的内容可能会有所帮助: header('Content-type: text/html; charset=UTF-8'); echo 'the word is / думата е '.$_GET

我正在尝试此代码(在本地web服务器上)

文档另存为“不带BOM的UTF-8”,标题也为UTF-8。 我尝试过urlencode()和urldecode(),但效果相同。
将其上载到web服务器时,工作正常…

如果尝试发送HTTP
内容类型头,以指示浏览器正在生成页面的编码/字符集,该怎么办

例如,类似这样的内容可能会有所帮助:

header('Content-type: text/html; charset=UTF-8');
echo 'the word is / думата е '.$_GET['word'];
当然,这是如果您正在生成HTML——您可能正在生成


考虑到服务器级别的配置设置定义了默认发送的编码,可能服务器上的默认编码是可以的,而本地服务器上的默认编码不是


您自己发送这样一个头可以解决这个问题:它可以确保始终正确设置编码。

我想您使用的是Apache web服务器

Apache配置有一个常见问题-配置中带有“AddDefaultCharset”的行应该被注释掉(在行的开头添加#,或者将行替换为“AddDefaultCharset off”),因为它“覆盖meta http equiv或xml编码标记中文件中给定的任何编码”


在我当前的安装(Apache2@ubuntulinux)中,行位于“/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)搜索它。

如果您从AJAX收到$\u GET,请确保您的blablablabla.js文件以UTF-8编码。您还可以使用iconv(“cp1251”、“utf8”和$\u GET['word'])
要在UTF-8中显示您的$\u GET['word'],请查看。一本好书


干杯

我刚刚遇到了这个问题,如果使用htmlentities()过滤GET变量,有时会出现这种情况。这个函数似乎可以将西里尔字母字符转换成奇怪的东西。

我尝试过header()-同样的结果。我认为这与我的本地服务器配置有关,但我不知道该去哪里查找。我得到:[Apache环境]HTTP\u ACCEPT\u字符集UTF-8,*[HTTP头信息]ACCEPT字符集UTF-8,*内容类型text/html;charset=utf-8[PHP变量]\u服务器[“HTTP\u ACCEPT\u charset”]utf-8,*nupogodi 10x作为您的答案!我正在使用apache(在Windows上),但在搜索了所有文件中的文本“AddDefaultCharset”后,您对这一点很紧张。在ApacheDir中,我只在名为“httpd.h”的文件中找到了一个命中,但它已经被注释了。我希望你有任何其他的建议。根据apache是由你安装的conf子目录中的文件配置的。如果没有“AddDefaultCharset”,请尝试在该目录的httpd.conf中添加新行“AddDefaultCharset off”(如果有这样的文件,或者将该行添加到apache用于配置的另一个文件中)。nupogodi我已经将其添加到httpd.conf中(我确信apache从那里获取设置)重新启动它,但是没有效果。您是否添加了其他注释的标题,因为它也是必需的?另外,我认为问题可能是您的浏览器发送了windows-1251编码的单词“ППСаа”,因此请尝试更改默认的浏览器编码,或使用带有“windows-1251”的标题,而不是UTF-8。是的,nupogodi,我已尝试使用标题功能。我不认为它来自我的浏览器,因为同一个文件在真正的服务器上工作。另外,当我手动将浏览器的编码设置为windows-1251时,GET-var中的文本变得可读,但所有其他文本都会被破坏,我不希望我的站点是windows-1251。。。。我认为这是apache或php.ini配置的结果,但我已经尝试了几乎所有的方法,但问题仍然存在。
the word is / думата е ����
header('Content-type: text/html; charset=UTF-8');
echo 'the word is / думата е '.$_GET['word'];