解决SpringMVC、tomcat、Intellij idea、ajax中文乱码问题

使用idea进行JavaWeb开发时,在前端与后台交互常常出现乱码问题,包括日志/控制台输出乱码,参数乱码等问题,归根结底是编码格式不对,解决方法汇总如下。

ajax 乱码

解决方法:在contentType中添加”charset=utf-8”

$.ajax({
  url:"/rest/get",
  type:"POST",
  contentType:"application/json;charset=utf-8", //添加编码格式
  data:JSON.stringify(a),
  dataType:"json",
  success:function(data){
    console.log("success!");
    console.log(data);
  },
  error: function (XMLHttpRequest, textStatus, errorThrown) {
    console.log(XMLHttpRequest.status);
    console.log(XMLHttpRequest.readyState);
    console.log(textStatus);
    console.log(errorThrown);
  }
});

SpringMVC乱码

解决方法:在@RequestMapping中添加以下代码:

接收参数编码设置:

comsumes="application/json;charset=UTF-8"

返回参数设置:

produces="application/json;charset=UTF-8"

完整代码如下:

@RequestMapping(value = "/post", method = RequestMethod.POST,consumes="application/json;charset=UTF-8", produces="application/json;charset=UTF-8")
@ResponseBody
public String getDailyLog(@RequestBody String message){

  System.out.println("编码格式为: "+System.getProperty("file.encoding"));
  System.out.println("message: "+message);
  logger.info(dailyLogShowService.getContent());
  System.out.println("System.out + "+"中文:"+dailyLogShowService.getContent());
  DailyLog dailyLog = dailyLogShowService.getDailyLog();
  logger.info(dailyLog);
  return "{\"a\":\"返回中文\"}";
}

tomcat乱码

解决方法:进入idea->Run/Debug Configurations的tomcat->server设置,

在VM options添加 “-Dfile.encoding=utf-8”

设置tomcat编码格式

idea编辑器乱码

如果不是上述问题,那么中文乱码可能是由编辑器引起的。

进入idea菜单 File->Setting-> File Encoding,将3标记的三处编码改为”UTF-8”

设置idea编码格式

然后进入idea的安装目录D:\setup\IntelliJ IDEA 14.0.3\bin

idea.exe.vmoptions和idea64.exe.vmoptions两个文件的末尾追加:'-Dfile.encoding=UTF-8'

可以使用Notepad++打开

一个小工具

利用以下代码输出当前的编码格式,如果输出的是GBK,则需要执行上面五个步骤,直到编码输出为UTF-8

System.out.println(System.getProperty("file.encoding"));

小结

解决乱码问题的五大步骤(无先后顺序):

1. ajax前端设置application/json;charset=utf-8;

2. springmvc后台添加 consumes = “application/json;charset=utf-8”, produces = “application/json;charset=utf-8”;

3. 在tomcat->server->vmoption中加入-Dfile.encoding=utf-8;

4. 在idea\bin中idea.exe.vmoptions、idea64.exe.vmoptions添加 -Dfile.encoding=utf-8;

5. 在idea的设置中搜索“File Encoding”,把三个地方的编码全部设置为uft-8

以上五条基本可以解决中文乱码问题,有其他方法欢迎补充。这篇文章希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 在IntelliJ IDEA 搭建springmvc项目配置debug的教程详解

    1.添加一个maven 2.选择maven 3.配置好需要debug的父工程 4.配置maven 5.最后就可以打断点debug了 到此这篇关于在IntelliJ IDEA 搭建springmvc项目配置debug的教程详解的文章就介绍到这了,更多相关IDEA 搭建springmvc项目配置debug内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • 彻底解决IDEA中SpringBoot热部署无效的问题(推荐)

    开启SpringBoot热部署,首先得在pom.xml中引入依赖 <!--SpringBoot 热部署依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> 但

  • IDEA 启动 Tomcat 项目输出乱码的解决方法

    刚开始碰到的时候没调试成功又放下了,老系统放在 MyEclipse 下面跑,这两天 MyEclipse 和 Tomcat 老出问题,借着这个机会又试了试,成功了. 大部分调试方法来自这里,但是有微调. 在 tomcat Server 中设置 VM options , 值为 -Dfile.encoding=UTF-8,可惜没生效 注意: 刚开始我也是设成UTF-8,但设了一圈回来,Console 窗口里日志行的信息两个字是生效了,但日志行内容还是乱码,于是试着把这一步的设置改成 GBK,居然成功了

  • 解决SpringMVC使用@RequestBody注解报400错误的问题

    一般使用@RequestBody接收的时候报400都是传入的json字符串和对应封装的对象不对应造成的 首先要注意 封装的对象中的字段类型有没有Date类型或者int等类型的,如果有的话,在set方法中统一将传入的参数要调整为String类型 在set方法中进行参数的转换 比如有一个Date类型的字段 private Date startTime; public Date getStartTime() { return startTime; } public void setStartTime(

  • 解决SpringMvc后台接收json数据中文乱码问题的几种方法

    1.使用ajax从前台页面传输数据到后台controller控制器的时候,出现中文乱码(问号???). 之前在网上找了各种解决方案,都行不通,最后发现是tomcat服务器接收数据的问题 解决方案: 方式一:在controller接收参数时,对参数进行转码 @ResponseBody @RequestMapping(value="/getJsonDataByCityName",produces="application/json") public String get

  • AJAX中文乱码PHP中完美解决方法

    最近在做一个项目,遇到AJAX中文乱码问题,经过一个下午的努力终于完美解决,现将心得写下来,希望对那些还困绕在这个问题而头痛不已的人们有所帮助. 众所周知,使用AJAX传送和接收中文参数时,如果不在客户端和服务器做相应的处理就会出现乱码问题,在网上相应的文章也不少,但是有的情况下很难从中找到符合自己理想的答案,我今天就是在网上找了很多,但是都差不多,讲ASP和JSP的比较多(我是用的PHP),所以到最后都没找到自己满意的答案. AJAX的中文乱码可以大概分为两中,第一种是向服务器端发送中文参数时

  • ajax中文乱码的各种解决办法总结

    由于XMLHTTP采用的是Unicode编码上传数据,而一般页面采用的是gb2312,这就造成显示页面时产生乱码.而当在获取页面时的XMLHttp返回的是utf-8编码,这就造成了显示产生乱码. 有一种解决办法就是使用encodeURIComponent加上修改 Content-Type 为 application/x-www-form-urlencoded" 来把数据统一编码成 url 格式,当然,也可以指定编码,如:"application/x-www-form-urlencode

  • 解决tomcat 静态页面(html)中文乱码的解决终极篇

    tomcat 中jsp不会乱码 但是html中文会乱码 原因有好几个: 没有设置页面编码 tomcat的配置不正确 文件保存的编码格式不是utf-8 等等 下面来讨论解决办法 html页面设置为 utf-8 在页面头部添加<meta>标签 tomcat的server.xml配置 (1) 添加 URIEncoding="UTF-8" <Connector port="8080" protocol="HTTP/1.1" connec

  • ajax中文乱码问题解决方案

    ajax中文乱码问题在中文中经常会出现这种问题,其实只要稍加注意就不会出现ajax中文乱码这回事情了,注意前后台编码一致.你用的是中文.而ajax传输数据的时候用的是utf-8 ,还有对ajax get方法时最好escape 或urlcode, 复制代码 代码如下: <%@ page contenttype="text/html;charset=gb2312%> 如果是用servlet就加 复制代码 代码如下: response.setcontenttype("text/h

  • Javascript和Ajax中文乱码吐血版解决方案

    今天弄了一天的Ajax中文乱码问题,Ajax的乱码问题分为两种: 1. JavaScript输出的中文乱码, 比如:alert("中文乱码测试"); 解决的办法比较简单,就是把jsp里所有的charset和pageEncoding的值都设置成相同的,一般是utf-8. 2. 这第二种就是Ajax从服务器端获得的数据出现乱码的问题.(我搜了n个小时试了n中方法才找到答案) 现在将我搜集的比较有效的方法都与大家分享:(我使用的开发环境是Eclipse,相信其他语言和开发环境都差不太多.)

  • 解决MySQL客户端输出窗口显示中文乱码问题的办法

    最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示: 上网查了一下原因:之所以会显示乱码,就是因为MySQL客户端输出窗口显示中文时使用的字符编码不对造成的,可以使用如下的命令查看输出窗口使用的字符编码:show variables like 'char%'; 命令执行完成之后显示结果如下所示: 可以看到,现在是使用utf8字符编码来显示中文数据的,但是因为操作系统是中文操作系统,默认使用的字符集是GB2312,所以需要把输出窗口使用的字符编码

  • 解决python使用open打开文件中文乱码的问题

    代码如下: 先在D盘下新建一个html文档,然后在里面输入含有中文的Html字符如下图,然后我们首先使用中文格式对读取的字符进行解码再用utf-8的模式对字符进行进行编码,然后就能正确输出中文字符 # -*- coding: UTF-8 -*- file1 = open("D:/1.html", mode='rb+') data = file1.read().decode('gbk').encode('utf-8') print data 以上这篇解决python使用open打开文件中

  • 解决python中使用PYQT时中文乱码问题

    如题,解决Python中用PyQt时中文乱码问题的解决方法: 在中文字符串前面加上u,如u'你好,世界',其他网上的方法没有多去探究,Python的版本也会影响解决方法,故这里只推荐这种. (有人说用toLocal8bit函数也可以,我试了下,貌似不行)请看例子: #coding=utf-8 from PyQt4 import QtGui, QtCore s = QtCore.QString(u'你好(hello)世界(world)') t = s.toLocal8Bit() u = unico

  • 解决python ogr shp字段写入中文乱码的问题

    首先,先确认一下你的字段值是不是乱码,如果是,按照以下方法: 我的字段值是来自于一个geojson字符串,我在对它解析时做了如下处理: properties = fea.get("properties") pro_json=json.dumps(properties) pro_json.replace('u\'','\'')#将unicode编码转化为中文先处理一下 pro_json=pro_json.decode("unicode-escape") #将unico

随机推荐