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

发布于 2024-11-06 07:01:44 字数 552 浏览 0 评论 0原文

我有一个旧的大型 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 一样工作。

有什么窍门吗?

I've an old big application in php that uses XML (DOMDocument).
The application works on PHP 5.2.5

$dom = new DOMDocument("1.0", "iso-8859-15");  
$dom->formatOutput = true;  
...  
$node->setAttribute('attr', 'value_with_éàè');  
$str = $dom->saveXML(); 

$str is sent to Flex and everything works fine.

Now, we have to change our server. The new version of PHP is 5.2.13.
In this version, the function setAttribute fails. (String is not utf-8.....)
And If I look $str, the string is cut at the first accent.

The code works if I use utf8_encode for attributes. The problem is that will take a lot of time to parse the code and add utf8_encode.....
I'm looking for a variable, a flag or something else to keep the application working like the old version of php.

Is there a trick ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沉默的熊 2024-11-13 07:01:44

去过那里。我感受到你的痛苦。字符编码问题本身就是一个痛苦。添加 MySQL、PHP 和网络服务器,您将面临一些繁重的问题需要解决。

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

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

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

祝你好运朋友。

Been there. I feel your pain. Caracter encoding issues are a pain in themselves. Add MySQL, php and a webserver to the mix and you have some heavy-duty issues to work out.

First off, it is possible to configure your toolset to use IS0-8859-15.

You have to make sure EVERY tool you use, php, mysql server, mysql-client ( configurable through my.conf or in php) , and webserver are configured for this caracter set. You also have to make sure the DB tables are ISO-8859-15, do not transfer with or open the data in anything not configured for ISO-8859-15 like...(cough cough phpMyAdmin.)

I once had problems because I opened the db dump in my UTF8 editor before loading it in ISO-8859-1 DB, and just opening in the editor and resaving it corrupted the file with UTF8 conversion. Of course these issues make you want to bang your head on a wall but trust me, follow the steps above, find the tool that uses UTF-8 start at DB and go from there and you shall be able to serve those special caracters without changing your code.

Good luck friend.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文