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文件,文件如下
<?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! ”的更多相关文章
- mybatis 增加热加载xml
由于在本地开发环境上每次修改mybatis xml文件都需要手动重启服务,调试的很麻烦,所以需要热加载xml文件来避免浪费时间,于是网上搜一下资料,看了下有一大堆,但试了下真正能跑起来没有(大都代码没 ...
- 通过JS加载XML文件,跨浏览器兼容
引言 通过JS加载XML文件,跨多种浏览器兼容. 在Chrome中,没有load方法,需要特殊处理! 解决方案 部分代码 try //Internet Explorer { xmlDoc=new Ac ...
- 解决 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 以及MyBatis批量加载xml映射文件的方式
错误 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 的出现,意味着项目需要xml文件来 ...
- Spring中加载xml配置文件的六种方式
Spring中加载xml配置文件的六种方式 博客分类: Spring&EJB XMLSpringWebBeanBlog 因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装 ...
- 通过 XML HTTP 加载 XML 文件
新建一个.aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="02-通 ...
- spring加载xml的六种方式
因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装入系统,这就需要利用Spring去动态加载某一位置下的配置文件,所以就总结了下Spring中加载xml配置文件的方式,我总结的有6 ...
- Spring加载xml配置文件的方式 ApplicationContext
大家都知道Java读普通文件是通过Basic I/O 中的InputStream.OutStream.Reader.Writer 等实现的.在spring 框架中,它是怎样识别xml这个配置文件的呢? ...
- Android开发 - ImageView加载Base64编码的图片
在我们开发应用的过程中,并不是所有情况下都请求图片的URL或者加载本地图片,有时我们需要加载Base64编码的图片.这种情况出现在服务端需要动态生成的图片,比如: 二维码 图形验证码 ... 这些应用 ...
- eclipse无法加载主类错误(项目上红色感叹号问题解决)
在用eclipse运行一个简单的继承程序时,在点击运行时提示如下: 点击process后,提示无法加载主类错误 在网上一直没找到原因,连helloword程序都无法正常运行了,而且此时我看到文件项目中 ...
随机推荐
- 发布一个java Servlet (静态发布)
Servlet 是sun开发的动态web资源 的技术 让 Servlet 能响应用户请求,必须将 Servlet 配置在 Web 应用中 如何将Servlet用Tomcat发布出去: 编译你的.jav ...
- iOS coreData问题
iOS常见错误-CoreData: Cannot load NSManagedObjectModel.nil is an illegal URL parameter 这是因为在工程中CoreData的 ...
- iOS 从应用中跳转至系统设置页面里的多种设置页面
我们在开发app过程中很多时候会需要设置系统权限,这时就需要在应用中跳转至系统设置页面权限设置页面,以下是自己结合网上的资料总结的一些经验: 直接从应用中跳转至系统设置中这个应用的权限设置页面 NSU ...
- UIScrollView之轮转图片
在iOS开发中,经常会在APP首页看到多张图片进行轮换.刚开始做的时候,感觉很麻烦,不是很好做,查阅资料后,我总结了一下,自己封装了一个简单的轮转图片库: UIScrollView无限滑动 ,只需要三 ...
- iOS带动画的环形进度条(进度条和数字同步)
本篇写的是实现环形进度条,并带动画效果,要实现这些,仅能通过自己画一个 方法直接看代码 为了方便多次调用,用继承UIView的方式 .m文件 #import <UIKit/UIKit.h> ...
- windows7 下伪静态配置方法
今天终于算是彻底知道windows7下伪静态的IIS配置了.尼玛真坑爹,竟然64位的和32位的配置竟然不一样... 网上找的比较详细的文章地址: http://jingyan.baidu.com/ar ...
- C#复习②
C#复习② 2016年6月15日 09:08 1.C#之Symbols Identifier = (letter|'_'|'@'){letter|digit|'_'}. 需要注意: 1.Unicode ...
- 如何在linux设置回收站
修改用户的环境变量 vi ~/.bashrc 注释第5行的别名 #alias rm='rm -i' 最后一行添加如下内容 mkdir -p ~/.trash alias rm=trash alias ...
- 6、软件配置工程师要阅读的书籍 - IT软件人员书籍系列文章
软件配置管理工程师的工作也是贯穿整个项目过程的.其主要针对项目中的各种文档.技术源码等等进行归档控制.一般的配置项比如需求说明书,概要设计,详细设计,测试文档,用户手册等,还有源代码管理,数据库文档文 ...
- 十五天精通WCF——第十四天 一起聊聊FaultException
我们在玩web编程的时候,可能你会不经意的见到一些http500的错误,我想你应该不会陌生的,原因你应该也知道,服务器异常嘛, 这时候clr会把这个未处理的异常抛给iis并且包装成http500的错 ...