在PHP 中使用simplexml_load_string 載入XML 時處理無效的UTF-8 編碼
處理來自外部來源的XML 回應時,您可能會遇到以下錯誤:「輸入的不是正確的UTF-8,請指示編碼!」由於聲明的編碼與實際內容之間的差異導致。
辨識問題
根據聲明的編碼驗證 XML 內容。如果確實不是 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中文網其他相關文章!