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

时间:2011-05-10 08:19:59

标签: php xml dom

我在php中使用XML(DOMDocument)的旧应用程序 该应用程序适用于PHP 5.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_encode属性,代码可以工作。问题是需要花费大量时间来解析代码并添加utf8_encode .....
我正在寻找一个变量,一个标志或其他东西来保持应用程序像旧版本的PHP一样工作。

有诀窍吗?

1 个答案:

答案 0 :(得分:0)

去过那儿。我感觉到你的痛苦。 Caracter编码问题本身就很痛苦。添加MySQL,php和网络服务器,你可以解决一些重要的问题。

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

你必须确保你使用的每个工具,php,mysql服务器,mysql-client(可通过my.conf或php配置),并为这个caracter集配置webserver。您还必须确保数据库表是ISO-8859-15,不要在没有为ISO-8859-15配置的任何内容中传输数据或打开数据...( cough cough phpMyAdmin。 )

我曾经遇到过问题,因为我在UTF8编辑器中打开数据库转储,然后将其加载到ISO-8859-1数据库中,只是在编辑器中打开并重新保存它,使用UTF8转换损坏了文件。当然这些问题让你想要在墙上敲门,但请相信我,按照上面的步骤,找到使用UTF-8从DB开始的工具然后从那里开始,你将能够在不改变的情况下为这些特殊的字符提供服务你的代码。

祝你好运。