首页  >  文章  >  后端开发  >  如何解决 PHP 的 simplexml_load_string 与 XML 中的“输入不是正确的 UTF-8”错误?

如何解决 PHP 的 simplexml_load_string 与 XML 中的“输入不是正确的 UTF-8”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-24 07:13:02628浏览

How to Resolve

在 PHP 中使用 simplexml_load_string 加载 XML 时处理无效的 UTF-8 编码

处理来自外部源的 XML 响应时,您可能会遇到以下错误:“输入的不是正确的UTF-8,请指示编码!”由于声明的编码与实际内容之间的差异导致。

识别问题

根据声明的编码验证 XML 内容。如果确实不是 UTF-8,则需要找到解决方案来预处理并纠正编码不兼容问题。

预处理选项

  • utf8_encode(): 使用此函数可能会解决问题,但如果 XML 同时包含有效的 UTF-8 和其他字符集,则可能会引入 mojibake。
  • iconv()或 mbstring: 尝试将字符串从 UTF-8 转换为 UTF-8,忽略无效字符。

手动验证和更正

此该方法需要了解 UTF-8,虽然很复杂,但可以进行精确修复。

部分解决方案

对于临时解决方法,请考虑使用下面提供的函数来修复一些问题编码问题:

<code class="php">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]);
}</code>

最佳实践

通知数据提供者有关无效编码的信息,以请求永久修复。正确处理字符编码可确保互操作性并防止意外行为。

以上是如何解决 PHP 的 simplexml_load_string 与 XML 中的“输入不是正确的 UTF-8”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn