使用 PHP 的 SimpleXML_Load_String 解码 XML 错误
在 PHP 中,使用 simplexml_load_string 函数处理 XML 响应有时会导致错误:“输入不是正确的 UTF-8,请指示编码!”尽管 XML 声明了 UTF-8 编码,但它可能包含非 UTF-8 字符,特别是在处理西班牙语等语言时。
修复编码不兼容性
至为了解决这个问题,可以采用以下几种策略:
预处理 XML:
检测正确的编码
不幸的是,PHP 没有提供明确的方法来自动检测 XML 文件的正确编码。
部分修复
作为临时解决方案,以下函数可用于部分修复 UTF-8 中常见的 Latin-1 编码问题:
function fix_latin1_mangled_with_utf8_maybe_hopefully_most_of_the_time($str) { return preg_replace_callback('#[\xA1-\xFF](?![\x80-\xBF]{2,})#', 'utf8_encode_callback', $str); } function utf8_encode_callback($m) { return utf8_encode($m[0]); }
请记住,此修复并不全面,可能无法解决所有编码差异。
以上是如何解决 PHP SimpleXML_Load_String 中的'输入不是正确的 UTF-8”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!