admin管理员组文章数量:1550418
最近在给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
转载于:https://wwwblogs/ningheshutong/p/5142729.html
版权声明:本文标题:php加载xml编码错误,“Error: Input is not proper UTF-8, indicate encoding! ” 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1727246286a1104667.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论