最近在给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文件,文件如下

 <?xml version="1.0" ?>
<Package>
<Header>
<RoadNo>12345</RoadNo>
<DataType>48</DataType>
<ModuleNO>12345</ModuleNO>
<SourceIP>127.0.0.1</SourceIP >
<SourcePort>11000</SourcePort >
<UserID>96998</UserID>
<RecordTime>2014-11-19 08:08:08:111</RecordTime>
<Imperative>1</Imperative>
<Result Flag="-1" Msg=" " />
</Header>
<DeviceList>
<DevItem DeviceID="5100001"/>
<DevItem DeviceID="5100002"/>
</DeviceList>
<VisionData>
<VisionItem TextInfo="欢迎驶入" PicNo="" FontName="宋体" FontSize="10" FontColor="黄" FontFormat="居中" Interval="100" Effect="1" />
<VisionItem TextInfo="减速慢行" PicNo="" FontName="宋体" FontSize="10" FontColor="黄" FontFormat="居中" Interval="100" Effect="1" />
</VisionData >
</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

最新文章

  1. ORM之殇,我们需要什么样的ORM框架?
  2. C语言的一些小知识
  3. 浏览器XMLHttpRequest案例
  4. HDU 1402 fft 模板题
  5. 六天玩转javascript:javascript变量与表达式(1)
  6. [HDF]hdf-4.2.6类库的使用
  7. 某个系统配置文件 用户层的SQL
  8. 12-24 关于UIScroView 控件的学习
  9. Java中调用参数是数组的存储过程
  10. HTML5吧!少年
  11. TCP/IP协议(零)TCP/IP参考模型
  12. 关于VO中的Attribute的问题
  13. Centos7 安装keepalived实现高可用
  14. code force 403B.B. The Meeting Place Cannot Be Changed
  15. JAVA基础经典面试
  16. 更改手机系统的User-Agent &amp; okhttp
  17. Tell Me About Yourself - Best Answers and Examples
  18. 监督学习Supervised Learning
  19. 动态BT跳转
  20. php pdo对象使用详解: 连接数据库与exec方法

热门文章

  1. iOS启动过程
  2. Android 系统API实现数据库的增删改查和SQLite3工具的使用
  3. iOS FMDB的使用(增,删,改,查,sqlite存取图片)
  4. 我的android学习经历9
  5. hypervisor与VMware共存方法
  6. Android四大组件之Activity &amp; Fragement
  7. 【转】C# 中的委托和事件
  8. 数据库ORACLE中函数decode的用法
  9. ORA-00600: internal error code, arguments: [kcblasm_1], [103], [], [], [], [], [], []
  10. 今天简单说一下cdc 的使用