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


Problem with accent in DOMDocument between different version of php

我有一个使用XML(DOMDocument)的php旧大应用程序。
该应用程序适用于 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 一样工作。

有诀窍吗?

去过那里。我感受到你的痛苦。Caracter编码问题本身就是一个痛苦。将MySQL,php和Web服务器添加到组合中,您将解决一些繁重的问题。

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

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

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

祝你好运的朋友。