PHP DOMDocument nodeValue转储文字UTF-8字符而不是编码
我遇到类似于this question的问题: nodeValue from DomDocument returning weird characters in PHP 我找到的根本原因可以用mb_convert_encoding()来模仿 在我的单元测试中,这终于解决了这个问题:
UTF-8数据的原始值似乎即将结束,运行PHP的系统的基本代码页很可能不是UTF-8. 一直到解析(使用转储到DOMDocument的HTML5lib实现)字符串保持干净,UTF-8友好.仅在使用数据提取时
我是否看到编码稳定性失败. 我的猜测是,domdocument导出到nodeValue的htmlentities catch使用了编码转换器,但忽略了内联编码值. 鉴于我的问题是HTML5,我认为它与实现的新颖性直接相关,但它似乎是一个更广泛的问题.除了开头提到的问题之外,我无法通过搜索找到有关DOMDocument特定问题的任何信息. UPDATE 以前进的名义,我已经从HTML5lib和DOMDocument切换到Simple HTML DOM,它导出干净的转义html,然后我可以解析回正确的UTF-8实体. 另外,我没试过的一个功能是
这对于遇到此问题的其他人来说可能是一个解决方案.它解决了我在AJAX / PHP中遇到的一个相关问题,这个解决方案发现于2009年的这篇博文:Overcoming AJaX UTF-8 Encoding Limitation (in PHP) 解决方法: 刚刚在nodeValue上使用utf8_decode,它确实有点工作,有特殊字符无法正确显示的问题. 但是,某些字符仍然存在问题,例如简单引用’和其他一些字符(例如) 所以使用$element-> nodeValue将不起作用,但utf8_decode($element-> nodeValue)将 – PARTLY. (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |