编码问题 Invalid byte 1 of 1-byte UTF-8 sequence

[color=blue]
XML内容实际是以UTF-8编码的,因此造成了包括中文字符的XML文件无法正常阅读,将编码格式改成“GB2312”后就可以正常解析了。<?xml version="1.0" encoding="GB2312"?>


自己的总结:
1、“org.dom4j.DocumentException: Invalid byte 1 of 1-byte UTF-8 sequence.”异常分析和解决:
分析:
该异常由下面的reader.read(file);语句抛出:
SAXReader reader = new SAXReader();
Document doc = reader.read(file);

产生这个异常的原因是:
所读的xml文件实际是GBK或者其他编码的,而xml内容中却用<?xml version="1.0" encoding="utf-8"?>指定编码为utf-8,所以就报异常了!

注释:参考网上的《Java/J2EE中文问题终极解决之道》一文,编码问题原因应该是:操作系统编码为GBK,而xml指定为utf-8,SAXReader使用系统的默认编码GBK,所以存在需要转换编码的问题,也就自然会出现乱码了!解决:让文件编码和java 操作该文件的接口的编码一致;

解决:
情况一:该xml文件由dom4j生成;

解决方法:用 org.dom4j.io.XMLWriter xmlWriter = new org.dom4j.io.XMLWriter(
new FileOutputStream(fileName));
代替
xmlWriter = new XMLWriter(new FileWriter(fileName));
,指定编码为utf-8生成xml文件;

详细参考资料1:
Dom4j 编码问题彻底解决 作者:lonsen
http://www.5inet.net/Develop/Java/036579,Dom4j_BianMaWenDiCheDeJieJue.aspx

情况二:解析从jsp页面中读取到的用户输入的xml描述内容时,reader.read()抛出异常;

解决方法:
调用read前先把xml内容转为utf-8编码:(使用支持编码格式的函数)

public void validate(FacesContext context, UIComponent component, Object obj)
throws ValidatorException {

String xmldescription = (String) obj;
byte[] bytes =xmldescription.getBytes();
RelationXmlParser.isXmlOK("E:\\jiangcm\\templateXMLSchema.xsd",bytes);
……
}

public static boolean isXmlOK(String xsdFile, byte[] tagetXml) throws SAXException, IOException, DocumentException
{
SAXReader reader = new SAXReader();
……
InputStream in = new ByteArrayInputStream(tagetXml);
InputStreamReader utf8In=new InputStreamReader(in,"utf-8");
……
}


方法三、String.getBytes("utf-8")

返回utf-8的字节就可以了
[/color]
解决Invalid byte 1 of 1-byte UTF-8 sequence 立即下载

相关推荐

几何修复_ANSYS流体分析:几何前处理

建模及几何处理工具非常多,选择起来让人眼花缭乱。对于仿真而言,高效的对几何进行清理及生成符合仿真要求的几何至关重要。ANSYS SpaceClaim Direct Modeler是基于直接建模思想的新一代3D高效率建模和几何编辑修补软件。SCDM提供了当今最快速、最富有创意的直接建模解决方案。由于它的直接建模能力即使对于导入的其它3D模型(如catia、proe、solid works创建的几何)...

weixin_35778830的博客 2416

Invalid byte 1 of 1-byte UTF-8 sequence.解决办法

在编写xml文件时,遇到了Invalid byte 1 of 1-byte UTF-8 sequence.这个问题,尝试了几种解决办法如下: 1.将xml文件的encoding改为gbk或者gb2312 2.强项目的编码改为utf-8 3.强xml文件的encoding改为UTF8,去掉“-” 以上解决办法发现都无法解决,最后我找到了这个xml的根目录,将xml以文本文档格式打开,之后将其

liquantong的博客 1万+

银河麒麟V10安装docker

最近在做的一个信创项目使用的操作系统是银河麒麟高级服务器V10,在安装docker时,会遇到下面的错误。 nothing provides fuse-overlayfs >= 0.7 needed by docker-ce-rootless-extras-20.10.0-3.el7.x86_64 经过分析,以下依赖包是centos系统中的包,所以需要给kylinos创建一个合适的centos源。经过实验,Kylin Linux Advanced Server V1

m0_38004228的博客 4908

invalid byte 1 of 1-byte UTF-8 sequence

<br />在用SAX解析XML文档的时候,在XML文件中如果有中文的话就会抛出“invalid byte 1 of 1-byte UTF-8 sequence”异常,调试是总是找不到问题所在,于是求救于网络,终于找到问题所在,成功解决了问题,在此谢谢强大的网络资源。 <br /><br />   XML内容实际是以UTF-8编码的,因此造成了包括中文字符的XML文件无法正常阅读,将编码格式改成“GB2312”后就可以正常解析了。<?xml   version="1.0"   encoding="GB231

Democreen 1万+

STM32H743 ADC多通道采样实战:CubeMX配置+DMA传输避坑指南

本文详细介绍了STM32H743 ADC多通道采样的实战配置,包括CubeMX参数设置、DMA传输优化及常见问题解决方案。重点解析了ADC模块的核心特性、多通道采样序列配置、Cache一致性处理等关键技术,帮助开发者高效实现稳定可靠的模拟信号采集系统。

weixin_29175469的博客 611

# YOLOv11-seg改进系列 | 引入CVPR MetaFormer的C3k2_PoolingFormerCGLU模块,池化Token混合+CGLU门控MLP

本文引入 CVPR 2022 论文(MetaFormer/PoolFormer)提出的 MetaFormer 元架构设计,以Pooling Token 混合器 + ConvolutionalGLU(CGLU)MLP构成,将其封装为,用于替换 YOLOv11-seg 的 C3k2 块。对比维度C3k2(基线)C3k2_PoolingFormerCGLU(本文)参数量(n scale)2.46M≈2.49M9.6≈9.69.7(+1.0%)架构范式单阶段卷积MetaFormer 双阶段。

qq_44224801的博客 844

解析xml中报错 Invalid byte 1 of 1-byte UTF-8 sequence. 解决方式

1,  一般报Invalid byte 1 of 1-byte UTF-8 sequence这个错 ,是应为xml中有中文字符 并且没有 使用 CDATA 标签包含中文。&lt;name&gt;&lt;![CDATA[合计]]&gt;&lt;/name&gt;  ,2.使用完 CDATA 后 如果xml  中使用 &lt;?xml version="1.0" encoding="utf-8"?&g...

hanzl1的博客 4461

深入详解DICOM医学影像定位线相关知识:理解定位线的概念、定位线的作用以及定位线显示和计算原理

深入详解DICOM医学影像定位线相关知识:理解定位线的概念、定位线的作用以及定位线显示和计算原理

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 2052

DOM4J编码问题 Invalid byte 1 of 1-byte UTF-8 sequence

http://hlwlemon.blog.sohu.com/81841115.html      本文出处在用dom4j的时候发现有时会出现这个问题:无法以UTF-8保存xml文件,保存后再次读出的时候会报“Invalid byte 2 of2-byte UTF-8sequence.”这样一个错误,检查发现由dom4j生成的这个文件,在使用可正确处理XML编码的任何的编辑器中中文成乱码

风在竹林的专栏 7518

CAN 通信测试工具 canutils

概述 CAN,Controller Area Network,控制器局域网,一种高可靠性的现场总线。广泛用于汽车电子、工业控制通信。 canutils 工具包内含 5 个独立的程序:canconfig、candump、canecho、cansend、cansequence。这几个程序的功能简述如下: canconfig:用于配置 CAN 总线接口的参数,主要是波特率和模式。 candump...

一个软件工程师的技术笔记 1万+

SCADA|KIO程序导出变量错误处理办法

雷工在使用KingSCADA3.52软件导出KIO变量时,遇到导出Excel格式文件报错的问题,错误提示为“ADODB.Connection未找到提供程序”。经过咨询技术人员,发现该功能需要安装Office软件,并与已安装的WPS软件兼容。雷工随后安装了Office2021版本,并进行了兼容性设置。安装过程中遇到无法启动的问题,通过删除安装目录、清理注册表、使用卸载软件和重启电脑等方法解决。安装完成后,雷工在WPS中设置了与Microsoft Office2003兼容的模式,最终成功解决了导出变量时的问题。

做有价值的事,积累有价值的笔记! 957

DOM4J编码问题 Invalid byte 1 of 1-byte UTF-8 sequence (转)

在用dom4j的时候发现有时会出现这个问题:无法以UTF-8保存xml文件,保存后再次读出的时候会报“Invalid byte 2 of 2-byte UTF-8 sequence.”这样一个错误,检查发现由dom4j生成的这个文件,在使用可正确处理XML编码的任何的编辑器中中文成乱码,从记事本查看并不会出现乱码会正确显示中文。让我很是头痛。。。。 试着使用GBK、gb2312编码来生成...

iteye_2127的博客 269

华为OD机试真题 新系统【小花获胜的奶茶】

华为OD机试真题 新系统【小花获胜的奶茶】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【小花获胜的奶茶】多语言题解。

qq_45776114的博客 384

sax解析xml文件出现编码错误问题Invalid byte 1 of 1-byte UTF-8 sequence.

Invalid byte 1 of 1-byte UTF-8 sequence.

Jmutor 921

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

xml编码问题 org.xml.sax.SAXParseException: Invalid byte 1 of 1-byte UTF-8 sequence.

org.xml.sax.SAXParseException: Invalid byte 1 of 1-byte UTF-8 sequence. 这个问题的解决: // 生成的xml的格式 OutputFormat format = OutputFormat.createPrettyPrint(); // 生成的xml文档路径 String path = "D:/Documents a...

javawjy的博客 497

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IDEA下Invalid byte 1 of 1-byte UTF-8 sequence,1 字节的 UTF-8 序列的字节 1 无效

IDEA下Invalid byte 1 of 1-byte UTF-8 sequence,1 字节的 UTF-8 序列的字节 1 无效 使用了几种方法都没有用例如将UTF-8改为utf8,打开记事本另存为覆盖等 下面这种在pom.xml添加以下代码 解决了我的问题 <properties> <project.build.sourceEncoding>UTF...

田园小菜籽的博客 1018

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

xml中1字节的UTF-8序列的字节1无效([字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案)

今天在eclipse中编写pom.xml文件时,注释中的中文被eclipse识别到错误:Invalid byte 1 of 1-byte UTF-8 sequence,曾多次遇到该问题,问题的根源是: The cause of this is a file that is not UTF-8 is being parsed as UTF-8. It is likely that th

zhangzhikaixinya的专栏 3438

dom4j解析带有中文字符的xml报Invalid byte 1 of 1-byte UTF-8 sequence.

String result="测试"; SAXReader sr = new SAXReader(); ByteArrayInputStream input = new ByteArrayInputStream(result .getBytes()); Document doc = sr.read(input); Element root = doc.getRoo...

西西里飞鱼 181

[字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案

[字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案

asdfgh0077的博客 349

Kettle运行作业过程时报UTF-8错误:Invalid byte 1 of 1-byte UTF-8 sequence

错误情况: kettle在运行作业时控制台报错: Invalid byte 1 of 1-byte UTF-8 sequence. Caused by: org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 9; Invalid byte 1 of 1-byte UTF-8 sequence. Caused by: org.apache.xerces.impl.io.MalformedByteSequenceException: In

Sdnu08gis的专栏 3393

xml中1字节的UTF-8序列的字节1无效

今天在eclipse中编写pom.xml文件时,注释中的中文被eclipse识别到错误:Invalid byte 1 of 1-byte UTF-8 sequence,曾多次遇到该问题,问题的根源是: The cause of this is a file that is not UTF-8 is being parsed as UTF-8. It is likely that th

zhangzhikaixinya的专栏 2万+

xml文件中[Invalid byte 1 of 1-byte UTF-8 sequence.]的解决方案

问题描述:   导入项目包后发生xml文件出现错误信息:[Invalid byte 1 of 1-byte UTF-8 sequence.],如下截图所示: 解决方案:   将xml文件全部内容剪切到NotePad++这类纯文本编辑器后再拷贝粘贴回来即可,如下截图所示: 转载于:https://www.cnblogs.com/valuestack/p/invalid-byte...

weixin_33717117的博客 166

Xml读取异常--Invalid byte 1 of 1-byte UTF-8 sequence

xml读取异常Invalid byte 1 of 1-byte UTF-8 sequence org.dom4j.DocumentException:Invalidbyte1of1-byteUTF-8sequence.Nestedexception:Invalidbyte1of1-byteUTF-8sequence 出现这个问题是在我修改过xml...

weixin_33985679的博客 193

dorado7开发问题1

用dorado7开发,遇到 Invalid byte 1 of 1-byte UTF-8 sequence. Invalid byte 1 of 1-byte UTF-8 sequence. 时,要在eclipse.ini文件中加上下面的启动参数。 -Dfile.encoding=UTF-8

cleanerq的专栏 701
上一篇: JAVA中HTML转PDF
下一篇: DOC to PDF to SWF(文件格式转换)
「已注销」
博客等级 码龄15年 0粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值