我有一个使用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 提供服务。
祝你好运的朋友。