在PHP中创建时,XML文件不是UTF-8编码的

时间:2014-05-05 16:00:08

标签: php xml encoding utf-8

我试图使用PHP输出XML文件,一切都是正确的,除了创建的文件不是UTF-8编码的,它是ANSI。 (我看到当我打开文件时,执行另存为...)。 我正在使用

$dom = new DOMDocument('1.0', 'UTF-8');

但我发现非英语字符不会出现在输出中。 我正在寻找解决方案,我试着先添加

header("Content-Type: application/xml; charset=utf-8");

在PHP脚本的开头,但它说: 文档末尾的额外内容 下面是第一个错误的页面呈现。

我尝试过其他一些建议,例如不包括“UTF-8'在创建文档但单独编写时:     $doc->encoding = 'UTF-8';,但结果是一样的。

我用过

$doc->save("filename.xml"); 

保存文件,我尝试将其更改为

$doc->saveXML();

但非英语字符没有出现。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

ANSI不是真正的编码。这个词基本上意味着“我的Windows计算机配置使用的任何编码”。获得ANSI是在某处依赖默认编码的明显标志。

为了生成有效的UTF-8 输出,您必须使用正确的UTF-8 输入提供所有XML功能。最直接的方法是将PHP源代码保存为UTF-8,然后输入一些非英文字母。如果要从外部源(例如数据库)读取数据,则需要确保完整的工具链正确使用编码。

无论如何,在未公开的软件中使用“另存为”并不是确定文件编码的可靠方法。