2010-03-16 89 views
0

我無法找到原因,只能看到以下錯誤消息。 輸入不正確的UTF-8,表明編碼!字節:爲0x00 0x5D 0x5D 0x3E的無法通過PHP讀取XML

以下內容是我的PHP代碼

$reader2 = new XMLReader(); 
$reader2->XML($xmlstring); 
$user_data=""; 

while ($reader2->read()) { 

    if ($reader2->name == "user_id" && $reader2->nodeType == XMLReader::ELEMENT) { 
     $reader2->read(); 
     $user_data .=$reader2->value; 
    } 


} 
$reader2->close(); 

以下是XML數據

<?xml version="1.0" encoding="UTF-8" ?> 
<SOAP:Envelope xmlns:SOAP="http://www.w3.org/2003/05/soap-envelope" > 
    <SOAP:Body > 
<user_id>1234567890</user_id> 
<greeting_name><![CDATA[ABCDEF ..yl/�]]></greeting_name> 
</SOAP:Body> 
</SOAP:Envelope> 

我嘗試了很多辦法,但仍無法找到解決方案。問候標籤值可以是中文或英文單詞。

+0

該CDATA末尾有一個NULL字節。修復生成該XML的所有內容,以便它不輸出NULL字節,或者使用str_replace()將它們從文件中刪除,並希望獲得最佳效果。 – 2010-03-16 09:42:32

回答

1

並非所有字節序列都對utf-8中的字符進行編碼。有一些序列沒有意義,或者說 - 直截了當 - 是錯誤的。 xml解析器在輸入文檔中發現了這樣一個錯誤的序列(聲稱是正確的utf-8編碼)並且抱怨它。 xml文檔需要修復。