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的处理相关的知识,希望对你有一定的参考价值。
文章目录
- 前言
- 1. tomcat乱码的处理方法
- 2. applicationContext.xml报错2 字节的 UTF-8 序列的字节 2 无效
- 3. 报错application/json;charset=UTF-8 not supported]
- 总结
前言
分享下最近学习SSM框架遇到的一些BUG吧,首先从Tomcat的乱码开始吧开始吧。
1. tomcat乱码的处理方法
刚开始安装时Tomcat的默认端口是8080端口,我们可以通过修改安装目录下的conf文件下的server.xml来更改端口,并且可以指定Url的编码,我这里手动更改成了8888端口。
在输出端乱码的解决
将这些输出的encoding全部改成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就好。
将这个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 序列的字节 2 无效和‘application/json;charset=UTF-8‘ not supported的处理的主要内容,如果未能解决你的问题,请参考以下文章
IDEA启动项目报错:3 字节的 UTF-8 序列的字节 3 无效