栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

1字节的utf-8字节无效?!一文带你分析并处理xml中的中文编码异常!

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1字节的utf-8字节无效?!一文带你分析并处理xml中的中文编码异常!

一. 前言

我们在使用xml配置文件时,经常会使用中文注释来进行备注和提示。但有些情况下添加中文字符的注释,会让我们的项目运行失败,今天千锋老姜就带大家来看看是什么原因造成的这个错误问题。

我们在上图错误信息中,并没有发现错误地址的提醒,但有提示是xml问题,如下图所示:

对于以上这个问题,我们要简单了解下xml和utf-8字符编码到底是什么。

二. XML文档概述

XML是可扩展的标记语言(ExtensibleMarkup Language)缩写,主要用于提供数据表述格式,适用于不同应用程序间的数据交换,而且这种交换不以预先定义的一组数据结构为前提,增强了可扩展性。

XML在各个行业、各类应用中广泛使用,作为数据存储、传输交互等重要作用,具有很强的扩展性,并且跨平台、跨语言灵活度高。

三. 字符编码UTF-8

字符编码(Character encoding)也称字集码,UTF-8是针对Unicode的一种可变长度字符编码。

以中文为例,比如中文字符“哈”的unicode为“54c8”,对应的二进制表示为“01010100 11001000”,那么unicode是怎么转为utf8的呢?Unicode 与 UTF-8 编码有一个归纳的转换规则,如下所示:

Unicode Code   UTF-8 Code
0000~007F     0xxxxxxx
0080~07FF     110xxxxx 10xxxxxx
0800~FFFF     1110xxxx 10xxxxxx 10xxxxxx
10000~10FFFF  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

我们知道计算机只能读二进制,所以想让计算机显示出如中文等字符就需要使用字符编码。现在我们大致了解了这两方面的内容之后,再次回到错误问题上来。

根据上图错误信息的提示,我们会发现该异常是由于xml中的utf-8字符。

编码编译时导致的。而之所以会出现字符编码问题,只有非拉丁文的字符,即中文才会导致这样的编码错误。

四. 解决方式

现在既然知道了原因,那我们就可以对症下药进行解决了。

XML解析时,Java会将整个XML文档读入内存,构建一个DOM树来对各个节点(Node)进行操作,并使用递归方式进行遍历,XML出现字符编码的错误就是在递归遍历时读取到了中文字符才导致的问题。既然如此,我们就可以从以下2个方向进行解决。

解决方式1:

删除XML文件中所有的中文字符。

解决方式2:

设置idea开发工具的字符编码。

2.1 设置xml文件中的字符编码

2.2 设置idea工具里的字符编码

当我们设置完以上这些配置之后,就可以修复今天的这个异常问题了,现在你知道该怎么解决这个异常了吗?

扫码获取更多Java干货

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008255.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号