spring mvc ajax中文乱码的几种解决办法

使用spingmvc,在JS里面通过ajax发送请求,并返回json格式的数据,从数据库拿出来是正确的中文格式,展示在页面上就是错误的 ,研究了一下,有几种解决办法。

方法一:

在@RequestMapping里面加入produces = "text/html;charset=UTF-8"

Java代码

  1. @RequestMapping(value = "/configrole", method = RequestMethod.GET, produces = "text/html;charset=UTF-8")
  2. public @ResponseBody String configrole() {
  3. ......
  4. }

方法二:

因为在StringHttpMessageConverter里面默认设置了字符集是ISO-8859-1

所以拿到源代码,修改成UTF-8并打包到spring-web-3.2.2.jar

Java代码

  1. public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String>
  2. {
  3. public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
  4. ..........
  5. }

方法三:

修改org.springframework.http.MediaType它的构造方法的参数,并在applicationContext-mvc.xml 加入配置

Java代码

  1. public MediaType(String type, String subtype, Charset charset) {
  2. super(type, subtype, charset);
  3. }

Xml代码

  1. <bean id="stringHttpMessageConverter"
  2. class="org.springframework.http.converter.StringHttpMessageConverter">
  3. <property name="supportedMediaTypes">
  4. <list>
  5. <bean class="org.springframework.http.MediaType">
  6. <constructor-arg value="text" />
  7. <constructor-arg value="plain" />
  8. <constructor-arg value="UTF-8" />
  9. </bean>
  10. </list>
  11. </property>
  12. </bean>

方法四:

直接将org.springframework.http.converter.StringHttpMessageConverter 里面的属性defaultCharset设置成utf-8

Xml代码

  1. <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
  2. <property name="defaultCharset" value="UTF-8"/>
  3. </bean>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-14 18:46:08

spring mvc ajax中文乱码的几种解决办法的相关文章

springmvc StringHttpMessageConverter 中文乱码的几种解决办法(亲测)

昨天,将一个原来使用JSR 311作为restful实现的测试系统改成了使用spring mvc,最后测试的时候发现输出的json字符串为乱码,从日志可以看出使用的是StringHttpMessageConverter,并使用ISO-8859-1字符集,解决方法如下: public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> { public static final Charset

eclipse中的js文件出现中文乱码的三种解决办法

这里记录一下Eclipse中打开/编辑JS文件,出现中文乱码的解决办法. 出现中文乱码的原因 在Eclipse中,js文件的默认编码是ISO-8859-1,这种编码和中文不兼容,导致了解码失败,继而出现了中文乱码. 解决中文乱码的方法 解决的方法就是将js文件的编码修改为对应的中文编码就可以了. 1.依次点击Windows->Preferences->General->Content Types->Text->JavaScript Source File,将编码格式改为UTF

mysql保存中文乱码的原因和解决办法

当你遇到这个mysql保存中文乱码问题的时候,期待找到mysql保存中文乱码的原因和解决办法这样一篇能解决问题的文章是多么激动人心. 也许30%的程序员会选择自己百度,结果发现网友已经贴了很多类似mysql 中文乱码.php mysql 中文乱码.mysql5.5中文乱码.mysql 乱码.mysql乱码问题.mysql jsp 乱码.mysql jdbc 乱码.mysql 查询乱码.mysql 导入数据乱码等一系列问题,到底哪个是自己要找的能解决自己问题的呀?15%的程序员一看就懵了,剩下15

php中文乱码问题分析及解决办法

中文乱码问题产生的原因,主要就是字符编码设置问题: 首先,mysql数据库安装的时候字符编码要选择正确,最好选择utf-8比较保险.如果安装时没有设置正确,找到mysql的安装目录,修改my.conf配置文件中的字符设置,打开文件,应该一个是在mysqll下面,一个是在server下面的. 如果是php页面的中文乱码,也就是非数据库查询出来的数据,HTML页面静态的部分出现乱码,应该使用header("content-type:text/html; charset=utf8") 来设定

Spring MVC POST中文乱码解决方案

spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题,具体配置如下: java代码: <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncoding

Spring mvc responsebody 中文乱码问题

spring mvc在3.0中引入了responsebody这个注解,但是在源码中StringHttpMessageConverter 将默认编码写成了ISO-8859-1,并且是static final的,从网上搜了一堆,通过配置注入来解决,但是都是3.1的解决办法:看来只能通过重写+注入解决了,果然在网上搜到了一个贴了,试了下,可行~ 以下是帖子的一段~ @ResponseBody默认采取 public static final Charset DEFAULT_CHARSET = Chars

FlowPaper中文PDF乱码的一种解决办法

[关键词]FlowPaper.PDF.js.乱码 [结论]先给出解决办法,后面的大段内容只是为了记录当时的排查过程. PDF.js有全局变量对象PDFJS(1.8以上版本在pdf.js最后,1.5.x的版本没找到,在代码取值地方设置也可,下有说明),可以设置字体资源路径和方式(关于字体资源的说明可看此贴https://stackoverflow.com/questions/32764773/what-is-a-pdf-bcmap-file),如果采用默认不设置就可能会出现找不到资源文件乱码的情况

Spring MVC @Transactional注解方式事务失效的解决办法

Spring配置文件 applicationContext.xml <context:component-scan base-package="com.xdxx.ssm"> <!-- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> --> </contex

Spring MVC helloWorld中遇到的问题及解决办法

1.java.io.FileNotFoundException: Could not open ServletContext resource不能加载ServletContext的用法是配置到web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns=&quo