一直在愉快地通过由PHP和SimpleDOM.php削减的web表单将东西保存到我的XML文件中。
我需要保存有英语价格的项目,所以我需要英语英镑标志。然而,当我这样做时,会发生两件事:
我的XML文件中的第一行如下所示
<?xml version="1.0" encoding="ISO-8859-1"?>
在XML文件中,is被保存为
&Acirc;&pound;
据我所知,iso-8859-1应该有As标志,所以很困惑为什么这个Acirc要进入它.
我在另一条线上看到有人说尝试使用8859-15,但这并没有什么区别。
伙计们有什么想法吗?
干杯Jas (对所有这些编码的东西完全没有兴趣)
发布于 2011-09-08 14:21:47
£
的unicode代码点是U+00A3。在UTF-8编码中,它是0xC2 0xA3
.现在,在ISO-8859-1 0xC2中是Å,0xA3是Å。因此,在流程的某个地方,您输入的是UTF-8,它被解释为ISO-8859-1.您看过“表单”是如何在到达PHP代码之前对数据进行编码的吗?
另外,这个SimpleDOM在做什么呢?实体?和Â不是没有声明的有效XML实体。SimpleDOM是否添加声明?
发布于 2011-09-13 15:51:22
四十二人的反应彻底解决了其中一个问题.我将编码=iso-8859-1放在xml中,但在html元内容类型标记中使用utf-8。
如果有人看到这个答案,还有一件事要注意。我在Windows文档中的曲线引用(将Word 2007中的文本复制到我的站点上的html表单字段)方面也遇到了严重的问题。曲线引号和撇号之间有很大的区别。在英语键盘上,单词将上面的破折号(撇号)解释为一个单一的曲线引号。ISO-8859-1没有这样的实体(其编码为Windows-1252“标准”)。这会扼杀我的XML文档,因为它们是由PHP从form字段解析的。解决办法很简单:
$var = htmlentities($var,ENT_QUOTES, "Windows-1252");
其他人也提到了超文本和脱衣舞.但我花了4天半时间才把这一切都解决了。希望能给别人留点时间。
https://stackoverflow.com/questions/7349176
复制相似问题