不同版本的php之间的DOMDocument中存在重音问题

不同版本的php之间的DOMDocument中存在重音问题,php,xml,dom,Php,Xml,Dom,我有一个旧的php大型应用程序,它使用XML(DOMDocument)。 该应用程序在PHP5.2.5上运行 $dom = new DOMDocument("1.0", "iso-8859-15"); $dom->formatOutput = true; ... $node->setAttribute('attr', 'value_with_éàè'); $str = $dom->saveXML(); $str被发送到Flex,一切正常 现在,我们必须更换服

我有一个旧的php大型应用程序,它使用XML(DOMDocument)。
该应用程序在PHP5.2.5上运行

$dom = new DOMDocument("1.0", "iso-8859-15");  
$dom->formatOutput = true;  
...  
$node->setAttribute('attr', 'value_with_éàè');  
$str = $dom->saveXML(); 
$str被发送到Flex,一切正常

现在,我们必须更换服务器。PHP的新版本是5.2.13。
在此版本中,函数setAttribute失败。(字符串不是utf-8…)
如果我看$str,字符串在第一个重音处被剪切

如果我对属性使用utf8_编码,代码就会工作。问题是,解析代码和添加utf8_编码将花费大量时间……
我正在寻找一个变量、一个标志或其他东西来保持应用程序像旧版本的php一样工作


有把戏吗?

去过那里。我感觉到你的痛苦。字符编码问题本身就是一个难题。将MySQL、php和Web服务器添加到组合中,您将面临一些繁重的问题

首先,可以将工具集配置为使用IS0-8859-15

您必须确保您使用的每个工具,php、mysql服务器、mysql客户端(可通过my.conf或在php中配置)和Web服务器都为此字符集进行了配置。您还必须确保数据库表是ISO-8859-15,不要在任何未配置为ISO-8859-15的文件中传输或打开数据,如…(咳嗽phpMyAdmin.)

我曾经遇到过一些问题,因为在加载到ISO-8859-1 db之前,我在UTF8编辑器中打开了db转储,然后在编辑器中打开并重新保存它,用UTF8转换破坏了文件。当然,这些问题让你想把你的头撞到墙上,但相信我,按照上面的步骤,找到使用UTF-8的工具,从DB开始,然后从那里开始,你就可以在不更改代码的情况下为这些特殊字符服务


祝你好运,朋友。

你的源文件采用什么编码?它是iso-8859-15吗?这可能是问题所在,而不是PHP版本。将编码更改为UTF-8我的源文件的编码也在iso-8859-15和我的数据库中。所以,即使我用utf8转换我的文件,我也应该始终使用utf8_编码来对数据库的数据进行编码。在PHP5.2.5中没问题,在5.2.13中崩溃。。。我想我必须在所有地方添加utf8编码…我使用的是使用utf8的Flex。大头痛!!我需要更改代码的某些部分。