解决com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。

问题如下:

在这里插入图片描述

解决方案:

1、检查编译软件的编码格式是否正确

eclipse默认的编码格式是GBK,而idea默认编码格式为UTF-8

idea
在这里插入图片描述

eclipse
在这里插入图片描述

2、检查.xml头文件是否正确
<?xml version="1.0" encoding="UTF-8"?>
3、若使用的SSM框架,可以使用过滤器解决
<!--    2.配置SpringMVC的乱码过滤 ,所有请求都会被springmvc拦截-->
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
4、在pom.xml加入如下配置
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
5、或在applicationContext.xml文件中加入乱码配置
 <!--JSON乱码问题配置-->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8"/>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                        <property name="failOnEmptyBeans" value="false"/>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
6、或在pom.xml加入如下即可
<properties>  
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
</properties> 

相关问题:

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 2 字节的 UTF-8 序列的字节 2 无效。
链接: https://blog.csdn.net/weixin_46822367/article/details/115691737?spm=1001.2014.3001.5502.

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这是一个错误信息,意思是“com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节UTF-8 序列字节 1 无效”。这个错误通常是由于输入的数据不符合 UTF-8 编码规范导致的。 ### 回答2: com.sun.org.apache.xerces.internal.impl.io.malformedbytesequenceexception这个错误信息是Java中XML解析器Xerces报出的异常,提示在解析XML时发生了不合法的字节序列。具体地说,这个异常表示一个包含无效字节序列UTF-8编码的字节数组(byte array)被尝试转换为字符串(String)时出错。 在UTF-8编码中,一个字符可能由1~4个字节组成,而字节的第一个比特位用于指示该字节字节数。如果第一个比特位不是0,那么这说明该字节不是一个字符的开始字节,也就是无效字节序列。异常信息中指出,错误的字节序列包含一个字节,也就是说,在该字节之后没有接着足够的字节来表示一个合法的字符。 这个异常通常是由于不正确的字符编码设置或者存在非法字符导致的。解决这个异常的方法包括: 1.检查XML文档是否使用了正确的编码方式,例如UTF-8、UTF-16等。 2.检查XML文档是否存在不可打印的字符(如控制字符或删除字符等)。 3.在处理XML文档之前,可以使用Java的CharsetDecoder类对字节序列进行解码,或者使用String构造方法指定字符集(Charset)来避免这个异常。 4.如果还是无法解决问题,可以尝试使用其他的XML解析器,例如JDOM、DOM4J等,以找出问题的具体原因。 ### 回答3: 这个错误信息指的是在解析 utf-8 编码的文本时,发现其中包含的一个 1 字节utf-8 序列的第一个字节无效的。在 utf-8 编码中,一个字符可能由多个字节组成,而且每个字节的第一个位都是 1,其他位则表示该字符的二进制编码。因此如果一个 utf-8 序列的第一个字节不符合该规则,则会被判定为无效的。 这种错误一般是由于文本本身的编码格式有误或者被不正确地转换了编码格式,导致其中包含了无效utf-8 序列解决这个问题的方法通常有三个: 1. 检查文本编码格式:首先需要确保文本的编码格式正确,如果不正确则需要将其转换为正确的编码格式。查看文本的编码格式最简单的方法是打开文本文件,在其中运行一个文本编辑器,然后在查看菜单中查找编码格式选项。 2. 检查文本内容:如果文本的编码格式正确,则需要检查其中是否包含无效utf-8 序列。可以使用一些专门的工具进行检查,例如 UnicodeChecker 等。 3. 给代码增加异常处理:另外,对于代码中可能出现的这种异常情况,也可以增加异常处理代码,当程序在解析 utf-8 编码时遇到无效序列时,会抛出该异常,程序可以捕获该异常并进行相应的处理,比如输出错误信息或者进行其他的操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值