答案 0 :(得分:9)
£
的unicode代码点是U + 00A3。在UTF-8编码中,它是0xC2 0xA3
。现在,在ISO-8859-1中,0xC2是Å,而0xA3是£。因此,在流程的某个地方,您输入的内容将变为UTF-8,其被解释为ISO-8859-1。您是否看过“表单”在到达PHP代码之前如何对数据进行编码。
而且,这个SimpleDOM做什么w.r.t.实体? &安培; ACIRC;和&磅;不是没有声明的有效XML实体。 SimpleDOM是否添加了声明?
答案 1 :(得分:1)
42回复解决了其中一个问题...我在xml doc中使用encoding = iso-8859-1,但在html元内容类型标签中使用了utf-8。
如果有人遇到这个答案,还有一点需要注意。我对Windows文档中的弯曲引用也有一些残酷的问题(将Word 2007中的文本复制到我网站上的html表单字段中)。弯曲的引号和撇号之间有很大的区别。在英语键盘上,Word将上划线(撇号)解释为单个弯曲引号。 ISO-8859-1没有这样的实体(其编码在Windows-1252“标准”中)。这正在杀死我的XML文档,因为PHP是从表单字段解析的。解决方案很简单:
$var = htmlentities($var,ENT_QUOTES, "Windows-1252");
其他人提到了htmlentites和striptags ......但我花了4天时间将所有这些结合起来。希望能节省一些时间。