java云服务开发常见问题之spring中文字符串乱码
【摘要】 问题说明:spring3.0以上版本,若是直接返回字符串(json),所有中文均会变为???问题解析:中文字符串乱码是spring3.0以上版本的通用现象,是由于spring mvc默认字符串处理器字符集为ISO_8859_1引起的。如上图所示,spring源码中,mvc注册时,首先加载消息处理器然后如果没有用户自定义的消息处理器,则加载默认消息处理器而默认消息处理器中,字符串处理器 str...
问题说明:
spring3.0以上版本,若是直接返回字符串(json),所有中文均会变为???
问题解析:
中文字符串乱码是spring3.0以上版本的通用现象,是由于spring mvc默认字符串处理器字符集为ISO_8859_1引起的。
如上图所示,spring源码中,mvc注册时,首先加载消息处理器
然后如果没有用户自定义的消息处理器,则加载默认消息处理器
而默认消息处理器中,字符串处理器 stringHttpMessageConverter 默认字符集是ISO_8859_1,因此导致UTF-8的中文均显示为???,如下所示
解决方案:
所以若是希望全局性地解决 spring3.x之后的中文乱码问题,方案有以下几种:
1. 自定义全套消息处理器
2. 修改消息处理器 stringHttpMessageConverter 的默认字符集 (不能新增)
方案2实现:
使用@EnableWebMvc注解
继承WebMvcConfigurer接口,并覆盖extendMessageConverters
把消息处理器 stringHttpMessageConverter 的默认字符集改为UTF-8
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)