2012-02-14 63 views
0

所以XML有: <?xml version="1.0" encoding="ISO-8859-15"?> 我应该加载一些节点值并保存到它们。我应该使用什么编码?目前我使用的是utf8_encode(),这很愚蠢,但它在保存时起作用,但是当我不得不再次加载该值时,它具有带有可怕字符的“ÅÄÖ”,它显示为“ÔÃÃÓÔ ”。从xml编码到/从PHP?

我可以使用什么来编码字符串来保存和加载到/从PHP XML?这里的事情是与斯堪的纳维亚的字符..

编辑:对不起,我忘了把XML标签中{} ...

编辑:目前我使用DOM XPath来读取和修改xml文件。

回答

1

你根本不应该使用任何编码。

XML文档的内部编码是utf-8。
所以,只要你使用一些指定的解析器,例如simplexml,它就会将文档重新编码为utf-8,并且你总是有utf-8输出。

剩下的就看你想用这个数据和在什么编码的页面做什么。

+0

当我在nodevalue上写入并保存xml时,不使用utf_encode(),它从xml中删除所有内容,只留下'<?xml version =“1.0”?>'如果要保存的字符串有作为ÅÄÖ字符... – Heiska 2012-02-14 09:16:07

+0

请一次做一件事。你有阅读整理吗?有两种创建XML的方式,直接使用和使用任何库。如果您使用直接方法,就像HTML一样,您可以使用任何编码 - 只需在标题中进行设置即可。使用某些库编写器时,必须提供utf-8编码数据,因此,您可能需要对其进行重新编码。 – 2012-02-14 09:21:19

+0

'$ xpath-> nodeValue = utf8_encode($ _ POST ['input'])'这可以在写作时使用,但是在阅读时只有'echo $ xpath-> nodeValue',如果我想要读取的元素有Å ,Ö或Ä它回应类似于“ÔÓÔÓ – Heiska 2012-02-14 09:28:32

0

使用XMLReaderXMLWriter类,当您打开文件中指定的输入和输出的编码。在你的情况下,阅读文档:

$xmlReader = new XMLReader(); 
$xmlReader->open('test.xml', 'ISO-8859-15'); 

当您从文档中检索到值时,会自动将值转换为UTF-8。

请记住,XMLWriter需要UTF-8输入。