springmvc返回中文乱码问题
2024-10-15 22:21:39
关于springmvc的返回中文乱码的问题,网上可谓是清一色的一样,无外乎就两种,要么在局部类或这方法上解决,类似如下的代码:
@GetMapping(value="/error/query",produces="text/json;charset=utf-8")
public String getMessage(){
return "增加对字符编码限制";
}
另一种方式是在springmvc.xml中配置对应的全局参数,类似下面列举的部分:
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=utf-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
当然上面列举的这个是针对返回值为string类型,对于返回json类型的处理方式是一样的,只不过spring4.3对于json处理默认的编码方式使用的是UTF-8,这个我们可以通过springmvc对json处理类MappingJackson2HttpMessageConverter以及父类AbstractJackson2HttpMessageConverter中可以看到,具体源代码的
public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); protected void init(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
setDefaultCharset(DEFAULT_CHARSET);
DefaultPrettyPrinter prettyPrinter = new DefaultPrettyPrinter();
prettyPrinter.indentObjectsWith(new DefaultIndenter(" ", "\ndata:"));
this.ssePrettyPrinter = prettyPrinter;
}
代码是我截取了部分的源码,所以说如果你使用的spring4.3及后续版本,且返回值为json,如果全局配置,只需要在xml中配置<mvc:annotation-driven /> 即可,中文不会乱码;如果返回值是String类型,如果全局配置,则需要如小编上面的配置即可。
对于局部的处理,则还是使用produces的charset=UTF-8来实现。
当然也有很多小伙伴用的是spring4.3之前的版本,由于之前版本对于json的处理使用的是MappingJacksonHttpMessageConverter小编没下载源码,所以没有去研究,但是对于返回值为String类型的处理方式没有变。
最新文章
- 3、NAT
- code vs1506传话(塔尖)+tarjan图文详解
- 【转载】C++ 与“类”有关的注意事项总结(十二):按成员初始化 与 按成员赋值
- nRF51822之WDT浅析
- codevs 1203 判断浮点数是否相等
- C++之路进阶——codevs4655(序列终结者)
- 【leetcode❤python】 19. Remove Nth Node From End of List
- js及jQuery实现checkbox的全选、反选和全不选
- 那些年优秀的HTML5活动页面
- Asp.net MVC利用Ajax.BeginForm实现bootstrap模态框弹出,并进行前段验证
- 用css实现3D立方体旋转特效
- 国家语言,语言代码,locale id对应表
- Spark Submitting Applications浅析
- magento开发手册之目录结构
- How to resize or create a thumbnail image from file stream on UWP
- Unity关于方法事件生命周期官方文档
- dubbo注册中心介绍
- 【转】java中&;和&;&;的区别和联系
- 理解Java异常处理机制的机理
- CSU 2151 集训难度【多标记线段树】