SpringMVC - 设置UTF-8编码

参考

全局修改输出为UTF-8编码

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd

http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

annotation方法

由方法1, 我们可以看到一个起关键作用的类org.springframework.http.converter.StringHttpMessageConverter. 打开源码可以发现:

public class StringHttpMessageConverter extends AbstractHttpMessageConverter {

// 省略 ....

public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");

private final List availableCharsets;

private boolean writeAcceptCharset = true;

public StringHttpMessageConverter(Charset defaultCharset) {

super(defaultCharset, MediaType.TEXT_PLAIN, MediaType.ALL);

this.availableCharsets = new ArrayList(Charset.availableCharsets().values());

}

// 省略 ....

}

可以看到, 默认编码已经被设定为了Charset.forName("ISO-8859-1"). 所以我们需要想办法替换掉这个默认编码. 方法1是通过xml加载了参数为UTF-8的StringHttpMessageConverter.

回到使用注解配置的Java代码中:

因为配置SpringMVC的类, 需要继承于WebMvcConfigurerAdapter, 我们可以看看里面有没有相关方法可用.

public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer{...}

// 所以继续看WebMvcConfigurer

public interface WebMvcConfigurer {

/**

* Configure the {@link HttpMessageConverter}s to use for reading or writing

* to the body of the request or response. If no converters are added, a

* default list of converters is registered.

*

Note that adding converters to the list, turns off

* default converter registration. To simply add a converter without impacting

* default registration, consider using the method

* {@link #extendMessageConverters(java.util.List)} instead.

* @param converters initially an empty list of converters

*/

void configureMessageConverters(List> converters);

/**

* A hook for extending or modifying the list of converters after it has been

* configured. This may be useful for example to allow default converters to

* be registered and then insert a custom converter through this method.

* @param converters the list of configured converters to extend.

* @since 4.1.3

*/

void extendMessageConverters(List> converters);

}

可以看到configureMessageConverters和extendMessageConverters两个方法. 区别是前者会覆盖掉默认的Converter, 而后者是扩展. 所以我们只需要在我们继承于WebMvcConfigurerAdapter这个类的实现中覆盖掉configureMessageConverters方法即可.

实现如下:

@Configuration

@EnableWebMvc

@ComponentScan("me.xiaofud.spring101.spittr.web")

public class WebConfig extends WebMvcConfigurerAdapter {

@Override

public void configureMessageConverters(List> converters) {

StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(Charset.forName("UTF-8"));

stringHttpMessageConverter.setWriteAcceptCharset(false);

converters.add(stringHttpMessageConverter);

}

测试:

curl -I -X POST "http://localhost:8080/app/post/add"

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Content-Type: text/plain;charset=UTF-8

Content-Length: 1338

Date: Sun, 12 Nov 2017 14:17:49 GMT

修改读取参数时候的编码

在web.xml中:

添加一个filter, 注册org.springframework.web.filter.CharacterEncodingFilter.

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

encodingFilter

/*

springmvc 全局编码_SpringMVC-设置UTF-8编码相关推荐

  1. html转换编码格式,html编码转换 html编码设置utf gbk编码转换图文教程

    html编码转换 html编码设置utf gbk编码转换图文教程篇 常用HTML编码之urf-8编码转换为gb2312编码或者gb2312转换为utf-8编码快速转换设置,这里DIVCSS5介绍使用D ...

  2. eclipse设置工作空间的默认编码和设置项目的编码

    设置工作空间的默认编码 1. 2. 3. 设置项目的编码 1.选中项目,点击右键,选择 "properties" \ 2.选择Resource

  3. mysql连接编码设置_MySQL基础 - 编码设置

    刚开始工作的时候,在工作中遇到的与数据库相关的问题,多半跟编码有关,总结一下数据库编码的设置. 字符集 查看数据库支持的字符集: mysql> SHOW CHARACTER SET; 从图中可以 ...

  4. 设置MYSQL数据库编码为UTF-8:

    设置mysql数据库显示编码:set charset utf8;  查看mysql数据库编码:show variables like 'character%';    在这个过程中如果出现了数据库编码 ...

  5. python编码规范总结、python编码转换

    python编码规范总结.python编码转换 所有的 Python 脚本文件都应在文件头标上 #-*- coding:utf8 -*- .设置编辑器,默认保存为 utf8 格式. 编码 Python ...

  6. mysql 导入设置编码_从MySQL导出导入数据库的命令实例及设置会话字符编码

    1.导入导出 1.mysql导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc > ...

  7. 【Android RTMP】音频数据采集编码 ( FAAC 音频编码参数设置 | FAAC 编码器创建 | 获取编码器参数 | 设置 AAC 编码规格 | 设置编码器输入输出参数 )

    文章目录 一. 头文件.成员变量准备 二. 创建 FAAC 编码器 三. 获取并设置 FAAC 编码器参数 四. 设置 FAAC 编码器编码标准 五. 设置 FAAC 编码器 AAC 编码规格 六. ...

  8. 【Android RTMP】x264 编码器初始化及设置 ( 获取 x264 编码参数 | 编码规格 | 码率 | 帧率 | B帧个数 | 关键帧间隔 | 关键帧解码数据 SPS PPS )

    文章目录 安卓直播推流专栏博客总结 一. x264 编码器参数设置引入 二. 获取 x264 编码器参数 三. 设置 x264 编码器编码规格 四. 设置 x264 编码器编码图像数据格式 五. 设置 ...

  9. 1、代码中设置编码、编辑器中设置Python的编码

    1Python中文编码 1.1代码中设置编码 Python中默认的编码格式是ASCII格式,在没有修改编码格式时无法正确打印汉字,所以在读取中文的时候会报错. 解决办法为只要在文件开头加入 # -- ...

  10. linux 设置mysql 数据库编码utf8

    GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; UTF8: CREATE DATABASE ` ...

最新文章

  1. thymeleaf : input/select/radio回显
  2. Snagit9-12注册码
  3. 时间序列python复杂网络实例_基于时间序列数据的复杂网络重构
  4. 特别企划 | 或许是史上最萌的产品经理改需求姿势(多图)
  5. amcharts 网页绘图插件
  6. MySQL之SQL优化详解(一)
  7. java reset_void reset()
  8. VBA实现数据库中的字段处理(下划线去掉,后面的字母变大写)之版本1.0。
  9. Nginx增加第三方外部插件
  10. goroutine--退出示例--context的使用
  11. 基于SSM的校园垃圾分类系统
  12. android camera 拍照流程图
  13. 简述写基础java小游戏一般思路。
  14. 从定性遥感到定量遥感——大数据时代的空间数据科学
  15. Windows 技术篇-cmd命令查看系统启动时间、操作系统信息、内存使用情况、电脑配置信息
  16. 电脑文件被杀毒软件误删了怎么恢复?
  17. 药品零售企业未建立计算机系统,新版GSP药品经营企业计算机系统要求
  18. Android 最简单的自定义证件照Mask之一
  19. 第1关:knn算法概述
  20. 字符自编车牌号c语言,自编车牌号技巧,自编车牌号码大全

热门文章

  1. mysql innodb 并发 插入 慢_Innodb 锁机制——一次插入慢查询的排查
  2. 逻辑错误有哪些c语言,c语言程序,现在出现逻辑错误,哪位高手指点下啊。。。...
  3. 6个重构方法提升80%的代码质量
  4. java批量删除接口怎么定义_教你在Java接口中定义方法
  5. 泛型方法的定义和使用_泛型( Generic )
  6. Centos 利用yum源安装 nginx 1.20.1
  7. selenium:反反爬拖动验证码
  8. react 文件 md5_从零配置webpack 4+react脚手架(二)
  9. 2 172.02 php,kafka安装、相关命令以及PHP使用
  10. android解析ip地址,android – 如何从IP地址解析网络主机名