3 字节的 UTF-8 序列的字节 3 无效

关键错误信息如下所示:

Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [spring-config.xml]; nested exception is com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:410) ~[spring-beans-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336) ~[spring-beans-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) ~[spring-beans-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) ~[spring-beans-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) ~[spring-beans-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) ~[spring-beans-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) ~[spring-web-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) ~[spring-web-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) ~[spring-context-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:605) ~[spring-context-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:509) ~[spring-context-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446) ~[spring-web-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328) ~[spring-web-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) [spring-web-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4738) [catalina.jar:8.0.28]
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5181) [catalina.jar:8.0.28]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [catalina.jar:8.0.28]
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) [catalina.jar:8.0.28]
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) [catalina.jar:8.0.28]
	at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0_60]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_60]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_60]
	at java.lang.Thread.run(Unknown Source) [na:1.8.0_60]
Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。
	at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanData(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanComment(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanComment(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) ~[na:1.8.0_60]
	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) ~[na:1.8.0_60]
	at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76) ~[spring-beans-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429) ~[spring-beans-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391) ~[spring-beans-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	... 22 common frames omitted

解决方法:

经检查是xml文件问题,有以下两种原因:

1.编码格式,2.文件中有中文(更多可能是中文的空格) 【自己认真检查即可】

方法一:

 原xml文件首行: <?xml version="1.0" encoding="UTF-8" ?>

修改为GBK就可以了,即下所示

<?xml version="1.0" encoding="GBK"?>

经过测试,启动正常,功能正常,linux环境下 正常。


### 回答1: 这个错误提示表示一个字节utf-8 序列的第一个字节不符合 utf-8 编码规则,无法被正确解析。可能是因为该字节不是 utf-8 编码中的有效字符,或者该字节不符合 utf-8 编码的规范。需要检查数据源是否正确,或者尝试使用其他编码方式进行解析。 ### 回答2: UTF-8是一种编码格式,用来存储Unicode字符集中的字符。UTF-8的编码方式是变长的,表示一个字符可能需要不同数量的字节UTF-8中的每个字符都由一个或多个字节组成,其中第一个字节表示该字符所需的字节数。 在UTF-8编码中,字节1的前几个位用来表示该字符所需的字节数,如果字节1无效,表示该字符的字节数无法被识别。 这种情况可能发生在以下情况下: 1. 字节1被损坏或丢失,导致无法判断该字符所需的字节数。 2. 字节1的值不在UTF-8编码范围内,例如超过了0xF4,因为UTF-8的编码范围只在U+0000至U+10FFFF之间。 3. 字节1的值不符合UTF-8的编码规则,导致解析器无法正确解码该字符。 因此,当出现字节1无效的情况时,需要检查UTF-8编码的相关规则,查看UTF-8字符序列是否符合规范。如果不符合规范,需要修复或重新编码该序列,以便正确解析该字符。同时,需要确保输入的数据流是正确的,并且没有被损坏或丢失。 ### 回答3: UTF-8 是一种在计算机中使用的字符编码方案,它使用 1 至 4 个字节来表示所有的 Unicode 字符。UTF-8 的编码规则是,对于 ASCII 字符(U+0000 至 U+007F),使用单字节编码,而对于 Unicode 码点超出 ASCII 范围的字符,则使用多字节编码。每个多字节字符的第一个字节的最高位都为1,其余各字节的最高位均为0,以此来区分单字节和多字节字符。 由于 UTF-8 是一种可变长度的编码格式,因此在解码过程中,需要严格按照编码规则进行解码。如果在一个 UTF-8 序列中,字节 1 不符合编码规则,那么这个序列就无法被正确解码。可能会导致解码器无法识别这个序列,或者解码出错误的字符码点,从而影响后续的应用程序处理。 要解决这个问题,需要对 UTF-8 序列进行严格的校验,确保其符合规定的编码规则。在处理 UTF-8 编码的数据时,需要注意保持编码和解码过程的一致性,以避免出现无效字节序列。同时,还需要注意编码字符时所选择的字符集,以保证字符可以正确地被编码和解码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值