最近在给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

php加载xml编码错误,“Error: Input is not proper UTF-8, indicate encoding! ”的更多相关文章

  1. mybatis 增加热加载xml

    由于在本地开发环境上每次修改mybatis xml文件都需要手动重启服务,调试的很麻烦,所以需要热加载xml文件来避免浪费时间,于是网上搜一下资料,看了下有一大堆,但试了下真正能跑起来没有(大都代码没 ...

  2. 通过JS加载XML文件,跨浏览器兼容

    引言 通过JS加载XML文件,跨多种浏览器兼容. 在Chrome中,没有load方法,需要特殊处理! 解决方案 部分代码 try //Internet Explorer { xmlDoc=new Ac ...

  3. 解决 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 以及MyBatis批量加载xml映射文件的方式

    错误 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 的出现,意味着项目需要xml文件来 ...

  4. Spring中加载xml配置文件的六种方式

    Spring中加载xml配置文件的六种方式 博客分类: Spring&EJB XMLSpringWebBeanBlog  因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装 ...

  5. 通过 XML HTTP 加载 XML 文件

    新建一个.aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="02-通 ...

  6. spring加载xml的六种方式

    因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装入系统,这就需要利用Spring去动态加载某一位置下的配置文件,所以就总结了下Spring中加载xml配置文件的方式,我总结的有6 ...

  7. Spring加载xml配置文件的方式 ApplicationContext

    大家都知道Java读普通文件是通过Basic I/O 中的InputStream.OutStream.Reader.Writer 等实现的.在spring 框架中,它是怎样识别xml这个配置文件的呢? ...

  8. Android开发 - ImageView加载Base64编码的图片

    在我们开发应用的过程中,并不是所有情况下都请求图片的URL或者加载本地图片,有时我们需要加载Base64编码的图片.这种情况出现在服务端需要动态生成的图片,比如: 二维码 图形验证码 ... 这些应用 ...

  9. eclipse无法加载主类错误(项目上红色感叹号问题解决)

    在用eclipse运行一个简单的继承程序时,在点击运行时提示如下: 点击process后,提示无法加载主类错误 在网上一直没找到原因,连helloword程序都无法正常运行了,而且此时我看到文件项目中 ...

随机推荐

  1. IOS设计模式-组合设计模式

    前言:本篇博文将让你学会软件开发中的"何为树形结构"."何为组合模式"."组合模式可以解决的问题"等相关知识. 内容大纲: 1.树形结构 2 ...

  2. html中相似的标签、属性的区别

    [1]<i></i> 和 <em></em>标签 相同:都是表示斜体. 区别: (1)<em>表示被强调呈现的内容,<i>是物理 ...

  3. JavaScript(二)——语法

    1.基本数据类型: 字符串.小数.整数.日期时间.布尔型等. 2.类型转换: 分为自动转换和强制转换,一般用强制转换. 其他类型转换为整数:parseint(): 其他类型转换为小数:parseflo ...

  4. 按要求编写Java应用程序: (1)编写西游记人物类(XiYouJiRenWu) 其中属性有:身高(height),名字(name),武器(weapon) 方法有:显示名字(printName),显示武器(printWeapon) (2)在主类的main方法中创建二个对象:zhuBaJie,sunWuKong。并分别为他 们的两个属性(name,weapon)赋值,最后分别调用printName,

    package com.hanqi.test; public class xiyoujirenwu { private double height;// 身高 private String name; ...

  5. sql server 常见错误代码15000 - 15999含义解析

    错误 15000 - 15999 SQL Server 2008 R2 其他版本 错误 严重性 是否记录事件 说明(消息正文) 15001 16 否 对象 '%ls' 不存在或不是此操作的有效对象. ...

  6. jqGrid 学习笔记--数据异步加载方法(转)

    var commonQuery = '../importantInfoReport/pageQueryImportantInfoReport.action?type=0'; jQuery(" ...

  7. 使用DBI(perl)实现文本文件的导入导出mysql

    DBI 是perl脚本连接数据库的一个模块.perl脚本相对shell更灵活,功能更强大,跨平台能力强.相对可执行jar包要简单很多. ​1.下载安装包DBI-1.631.tar.gzperl脚本下载 ...

  8. stm32之NVIC

    非本人原创,转载自http://blog.csdn.net/denghuanhuandeng/article/details/8350392 STM32的NVIC理解 例程:  /* Configur ...

  9. Team Foundation Server 15 功能初探

    1. 系统安装 1.1. 系统需求 新版的TFS的系统要求发生了很大的变化,主要包含: - 不再支持32位的操作系统,只支持64位操作系统 - 只支持SQL 2014和SQL Server 2016, ...

  10. 大话设计模式C++版——原则和引言

    转贴请注明转自:http://blog.csdn.net/gufeng99/article/details/45832711 读程杰的<大话设计模式>有一段时间了,将其C#版的设计模式代码 ...