首頁 >後端開發 >php教程 >如何解決 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:02691瀏覽

How to Resolve

在PHP 中使用simplexml_load_string 載入XML 時處理無效的UTF-8 編碼

處理來自外部來源的XML 回應時,您可能會遇到以下錯誤:「輸入的不是正確的UTF-8,請指示編碼!」由於聲明的編碼與實際內容之間的差異導致。

辨識問題

根據聲明的編碼驗證 XML 內容。如果確實不是 UTF-8,則需要找到解決方案來預處理並修正編碼不相容問題。

預處理選項

  • utf8_encode(): 使用此函數可能會解決問題,但如果XML 同時包含有效的codeF -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