php加載xml編碼錯誤,“Error: Input is not proper UTF-8, indicate encoding! ”


最近在給php中解析xml的時候,拋出一個錯誤:

"Warning: DOMDocument::load(): Input is not proper UTF-8, indicate encoding ! Bytes: 0xBB 0xB6 0xD3 0xAD in file:/E:/phpWork/ShopProject/SendCMS.xml, line: 19 inE:\phpWork\ShopProject\xml.php on line 4"

意思是說DOMDocument的load函數在load的時候出現錯誤,然后我查看了我的xml文件,文件如下

 1 <?xml version="1.0" ?>
 2 <Package>
 3 <Header>
 4 <RoadNo>12345</RoadNo>
 5 <DataType>48</DataType>
 6 <ModuleNO>12345</ModuleNO>
 7 <SourceIP>127.0.0.1</SourceIP >
 8 <SourcePort>11000</SourcePort >
 9 <UserID>96998</UserID>
10 <RecordTime>2014-11-19 08:08:08:111</RecordTime>
11 <Imperative>1</Imperative>
12 <Result  Flag="-1" Msg=" " />
13 </Header>
14 <DeviceList>
15 <DevItem DeviceID="5100001"/>
16 <DevItem DeviceID="5100002"/>
17 </DeviceList>
18 <VisionData>
19 <VisionItem TextInfo="歡迎駛入" PicNo="" FontName="宋體" FontSize="10" FontColor="黃" FontFormat="居中" Interval="100" Effect="1" /> 
20 <VisionItem TextInfo="減速慢行" PicNo="" FontName="宋體" FontSize="10" FontColor="黃" FontFormat="居中" Interval="100" Effect="1" /> 
21 </VisionData >
22 </Package>
SendCMS.xml

然后發現類型定義沒有定義encoding,這里我猜是因為有漢字,所以默認為utf-8編碼,然后我就在網上找方法,果真,在stack over flow中找到了一個方法,分別如下

方法1:

解決方案:讀取文本內容,然后將文本內容進行編碼轉換,用iconv函數來進行轉換,具體的代碼如下

//讀取文件內容
$myfile = fopen("SendCMS.xml",'r');
$content = fread($myfile,filesize("SendCMS.xml"));
fclose($myfile);

$content = iconv('UTF-8', 'UTF-8//IGNORE', $content);
$xmldoc -> loadXML($content );
print $xmldoc->saveXML();
方法1,采用iconv函數

總體來說,這個解決方案都不錯,可以采用。

原文地址:Stack OverFlow


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM