Tomacat乱码和报错UTF-8 序列的字节 2 无效和‘application/json;charset=UTF-8‘ not supported的处理

Posted wx623883d3bae1b

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomacat乱码和报错UTF-8 序列的字节 2 无效和‘application/json;charset=UTF-8‘ not supported的处理相关的知识,希望对你有一定的参考价值。


文章目录

前言

分享下最近学习SSM框架遇到的一些BUG吧,首先从Tomcat的乱码开始吧开始吧。

1. tomcat乱码的处理方法

刚开始安装时Tomcat的默认端口是8080端口,我们可以通过修改安装目录下的conf文件下的server.xml来更改端口,并且可以指定Url的编码,我这里手动更改成了8888端口。

Tomacat乱码和报错UTF-8


在输出端乱码的解决

将这些输出的encoding全部改成UTF-8就可以啦,然后在使用时就不会出现这些问题啦。

Tomacat乱码和报错UTF-8

2. applicationContext.xml报错2 字节的 UTF-8 序列的字节 2 无效

配置文件报错org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing 
XML document from class path resource [applicationContext.xml]; nested exception is
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:
2 字节的 UTF-8 序列的字节 2 无效。

applicationContext.xml报错,我们只需要将xml的文件格式更改成UTF-8就好。

Tomacat乱码和报错UTF-8

将这个UTF-8改成UTF8,然后如果还有其他文件也是这样的话,也得进行修改成UTF8,然后就可以正常启动啦。

3. 报错’application/json;charset=UTF-8’ not supported]

当时是写一个更新的功能,采用的是jqerry来进行数据的交互,代码如下

$.ajax(
url:"$pageContext.request.contextPath /disableUser",
type:"post",
//data表示发送的数据
data:JSON.stringify(userId:userId,status:3),
// 定义发送请求的数据格式为JSON字符串
contentType:"application/JSON; charset=UTF-8",
//定义回调响应的数据格式为JSON字符串,该属性可以省略
dataType:"json",
//成功响应的结果
success:function(data)
if(data!=null)
if(data.userId>0)
alert("禁用成功!");
window.location.reload();
else
alert("禁用失败!");
window.location.reload();



);

报错:[http-nio-8888-exec-2] org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logException Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘application/json;charset=UTF-8’ not supported]

数据并没有访问到Controller层就已经报错,在网上翻了一下,最终找到大概是没添加jackson依赖的问题,我突然意识到似乎我们pom文件中确实是没有添加jacckson的依赖,下面是添加依赖的代码,注意版本之间的兼容性。

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>

我以为添加依赖就可以了,然后就一直试,没有想明白,最终看了一篇文章,才想起来,我的war是没有实时更新的,我添加依赖,但是在部署的时候,tomcat的war包是没有及时更新的,需要重新生成一个工件war,再部署就可以了。

Tomacat乱码和报错UTF-8

总结

记录一下自己踩坑的记录,又白白花了一个小时,就很难受,这种小坑不能再踩第二次了,呜呜呜…


以上是关于Tomacat乱码和报错UTF-8 序列的字节 2 无效和‘application/json;charset=UTF-8‘ not supported的处理的主要内容,如果未能解决你的问题,请参考以下文章

IDEA启动项目报错:3 字节的 UTF-8 序列的字节 3 无效

关于网页乱码问题

Eclipse * 字节的 UTF-8 序列的字节 * 无效。

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

iO流

Java IO