php-fwrite不写öäü/utf8

php-fwrite不写öäü/utf8,php,mysql,utf-8,fopen,fwrite,Php,Mysql,Utf 8,Fopen,Fwrite,我一直在试图解决这个问题大约1.5个小时,但我一直无法让它工作。我也在谷歌上搜索过 W3C验证器说我的服务器发送一个US-ASCII头 我写 <?xml version="1.0" encoding="utf-8"?> 但它不起作用 $this->rss_data .=utf8_decode(... 也没用 $this->rss_data .=utf8_decode(... 我也试过了 fwrite($this->rss_file, utf8_encode($

我一直在试图解决这个问题大约1.5个小时,但我一直无法让它工作。我也在谷歌上搜索过

W3C验证器说我的服务器发送一个US-ASCII头

我写

<?xml version="1.0" encoding="utf-8"?>
但它不起作用

$this->rss_data .=utf8_decode(...
也没用

$this->rss_data .=utf8_decode(...
我也试过了

fwrite($this->rss_file, utf8_encode($this->rss_data)) or die("Error while writing rss xml");
这也不起作用

保存的文本在我的XML中如下所示

Betriebsysteme sind fü;r计算机mithö;赫伦


我的Firefox浏览器正确显示了öäü,但我无法获得有效的RSS 2.0提要,因此提要条目不会显示。

尝试将标题设置为UTF8

header('Content-Type: text/html; charset=utf-8');
在您的桌面上:

打开文件时,请尝试使用正确处理UTF-8编码的程序。不带BOM和ASCII的UTF-8在最低代码点上是相同的,一些程序根据不必包含来自较高代码点的任何字符的样本确定编码。注意:Windows的notepad.exe不是检查文件的最佳选择

Unicode的前128个字符与ASCII一一对应,使用与ASCII具有相同二进制值的单个八位字节进行编码,使有效的ASCII文本也成为有效的UTF-8编码Unicode

另一种方法是在程序中将编码显式设置为UTF-8,并使用该设置检查文件

根据你的最后一句话,我的Firefox浏览器正确显示了öäü,但我无法获得有效的RSS 2.0提要,因此提要条目不会显示。编码很好,只是程序和服务器的头不正确

在服务器端:

在通过打开一个能够正确处理UTF-8而没有BOM表的程序来确认文件是UTF-8后,您必须检查Web服务器的配置,或者至少检查子域的配置

您必须在标题中设置*.xml或特定xml的编码。如果使用预生成的文件,则必须在域的或服务器的配置中执行此操作

这篇文章可能会有所帮助

通过扩展指定

使用AddCharset指令将字符编码与 当前目录中具有特定扩展名的所有文件,以及 它的子目录。例如,为扩展名为的所有文件提供服务 .html作为UTF-8,在纯文本编辑器中打开.htaccess文件并 键入以下行:

AddCharset UTF-8.html

可以指定扩展名,也可以不指定扩展名 前导点。可以向同一行添加多个扩展名。这 如果您有example.en.html或 example.html.en

该示例将提供扩展名为.html的所有文件 作为UTF-8。HTTP内容类型标头将包含一行结束符 使用“字符集”信息,如下例所示

内容类型:text/html;字符集=UTF-8

注意:所有文件都包含此 当前位置的所有子目录中的扩展也将被删除 担任UTF-8。如果出于某种原因,您需要提供零散的文件 使用不同的编码,您需要使用 其他指令

注意:您可以将字符编码与任何扩展名相关联 附加到您的文件中。例如,假设您使用语言 协商,您有两种语言的页面,它们都遵循该模型 example.en.html和example.ja.html。让我们也假设你是 很高兴使用服务器的ISO-8859-1默认设置提供英文页面, 但是我想用UTF-8提供日语文件

总结评论

如果您正在使用输出转义htmlspecialchars、strip_标记等,请检查这些函数是否干扰或多次调用

多次使用htmlentities可能会导致不期望的结果:

htmlentities('Ö') = &Ouml; (Ö in the browser)
htmlentities(htmlentities('Ö')) = &amp;Ouml; (&Ouml in the browser)

谢谢,我考虑过了,但我不知道如何编写标题的内容类型:text/html;字符集=utf-8';在我的xml文件中,因为它是php?和:当我用html编辑器打开文件时,文本是fü;r计算机mithö;这里也是,所以可能是fwrite的问题?看起来不错,现在的头也是uff-8,但现在的问题是öäü看起来像这样Ö;你能帮我检查一下验证器吗Ö;是Ö的HTML实体代码。您可能正在代码中的某个地方使用。或者您使用它两次,就会导致转换原始Ö;至&;Ouml;将在客户中以Ö;