开发中常遇到各种中文乱码很少心烦,这里总结了各种中文乱码https://www.cnblogs.com/lwx521/p/9856186.html

下面以SpringMVC遇到的中文乱码为例详解

首先上代码

前台:

<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<table width="100%" border="" cellspacing="" cellpadding="">
<tr>
<td><a href="#" onclick="add()">添加</a></td>
<td><a href="#" onclick="del()">删除</a></td>
<td><a href="#" onclick="select()">查询</a></td>
<td><a href="#" onclick="update()">修改</a></td>
</tr>
</table>
<script type="text/javascript">
function add(){
$.ajax({
type:"POST",
url:"lll.do",
data:{id:"添加11111111111"}});
} function del(){
$.ajax({
type:"DELETE",
url:"lll.do",
data:{id:"删除11111111111"}});
} function select(){
$.ajax({
type:"GET",
url:"lll.do",
data:{id:"查询3333333333"}});
} function update(){
$.ajax({
type:"PUT",
url:"lll.do",
data:{id:"修改4444444"}});
}
</script>

前台代码非常简单,主要是是个按钮,分别触发四个ajax请求,请求路径一样,只是请求方式不一样

GET(SELECT):从服务器查询,可以在服务器通过请求的参数区分查询的方式。
POST(CREATE):在服务器新建一个资源,调用insert操作。
PUT(UPDATE):在服务器更新资源,调用update操作。
DELETE(DELETE):从服务器删除资源,调用delete语句

再看后台代码:

@RequestMapping(value = "/lll.do", method = RequestMethod.DELETE)
@ResponseBody
public String test(String id){
System.out.println("删除");
System.out.println(id);
return id;
} @RequestMapping(value = "/lll.do", method = RequestMethod.POST)
@ResponseBody
public String test1(String id){
System.out.println("添加");
System.out.println(id);
return id;
} @RequestMapping(value = "/lll.do", method = RequestMethod.PUT)
@ResponseBody
public String test2(String id){
System.out.println("修改");
System.out.println(id);
return id;
} @RequestMapping(value = "/lll.do", method = RequestMethod.GET)
@ResponseBody
public String test3(String id){
System.out.println("查询");
System.out.println(id);
return id;
}

四个方法分别对应增删改查,只是简单的输出一下,想要数据库操作自行定义service和dao吧,相信难不倒大家。

分别点击增删改查按钮,控制台结果如下:

添加                 //post
添加11111111111 删除 //delete
null 修改 //put
null 查询 //get
查询

这是不加任何配置和字符过滤器的结果

那么怎么处理这些乱码呢?

相信大家对get的请求的乱码最为熟悉,对于这种乱码处理结果有三种分别是设置服务器编码方式、进行URL编码和接收参数时设置参数编码,详细可见我的上篇博客,链接开头已给出

解决办法:这里我用的是meavn搭建的项目,使用的是tomcat7-maven-plugin插件,所有直接在插件里配置

<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!--配置端口号-->
<port></port>
<!--配置访问路径,此处配置为根目录,即http://localhost/-->
<path>/SSM</path>
<uriEncoding>UTF-8</uriEncoding>//这里配置插件的编码方式
</configuration>
</plugin>

配置完,重新启动再次点击查询结果如下:

查询
查询3333333333

而PUT和DELETE方式接收的参数为null,怎么办呢?

可以在参数前面加入@RequestBody注解,为什么加这个注解呢?他有什么用?详解参考我的这篇博客https://www.cnblogs.com/lwx521/p/9855891.html

//加入@RequestBody
(@RequestBody String id) 结果如下:
删除
id=%E5%%A0%E9%%A411111111111 修改
id=%E4%BF%AE%E6%%B94444444

值是有了,但是还是乱码?看的真心烦,由于@RequestBody接收的是请求体中的JSON字符串,而我上传的是JSON对象,那怎么把JSON对象转化成JSON字符串呢?

那就办法多了,这里列出两种方法:

方法一:
function del(){
var data={id:"删除11111111111"};
$.ajax({
type:"DELETE",
url:"lll.do",
data:JSON.stringify(data)//使用JSON.stringify()将JSON对象转化成JSON字符串
});
} 方法二:
function update(){
var data='{id:"删除11111111111"}';//直接定义JSON字符串
$.ajax({
type:"PUT",
url:"lll.do",
data:data});
}

看到所有的乱码都解决了,心里美滋滋!!!

查询
查询3333333333 添加
添加11111111111 修改
{id:"删除11111111111"} 删除
{"id":"删除11111111111"}

SpringMVC RESTful中文乱码的更多相关文章

  1. springmvc字符 中文乱码问题

    springmvc字符 中文乱码问题 1.字符过滤器 输入中文测试,发现乱码 以前乱码问题通过过滤器解决 , 而SpringMVC给我们提供了一个过滤器 , 可以在web.xml中配置,修改了xml文 ...

  2. SpringMvc解决Restful中文乱码问题

    中文乱码问题解决方式: <!-- 解决中文乱码问题 --> <filter> <filter-name>CharacterEncodingFilter</fi ...

  3. springmvc返回中文乱码问题

    关于springmvc的返回中文乱码的问题,网上可谓是清一色的一样,无外乎就两种,要么在局部类或这方法上解决,类似如下的代码: @GetMapping(value="/error/query ...

  4. SpringMVC页面中文乱码

    刚开始学习使用SpringMVC,完成配置之后开始编辑页面源码,添加了几个中文字符(index.jsp) <html> <body> <h2>hello world ...

  5. springmvc解决中文乱码问题

    1 第一种情况(get接收参数): 最近在用solr做一个搜索服务,发布给手机和pc等客户端调用,调用方式为:   http://www.ganbo.search/search?q="手机& ...

  6. springmvc数据处理-中文乱码

    首先解决中文乱码 通过mvc过滤器解决,在web.xml中配置 <filter> <filter-name>CharacterEncodingFilter</filter ...

  7. SpringMVC redirect中文乱码问题

    在使用"redirect:xxx.do?param=中文"时会出现乱码问题,解决方案如下: 使用model.addAttribute来替代直接拼接参数.如下: @RequestMa ...

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

    昨天,将一个原来使用JSR 311作为restful实现的测试系统改成了使用spring mvc,最后测试的时候发现输出的json字符串为乱码,从日志可以看出使用的是StringHttpMessage ...

  9. SpringMVC(二) —— 中文乱码处理

    Get的乱码处理 改tomcat中server.xml中的port=“8080”,加上一个 URIEncoding=”utf-8” 如下图: 2.Post乱码的处理 在web.xml文件中加入 < ...

随机推荐

  1. UVALive - 6257 K - Chemist's vows 【DFS】【BFS】【DP】

    题目链接 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...

  2. hadoop自带例子SecondarySort源码分析MapReduce原理

    这里分析MapReduce原理并没用WordCount,目前没用过hadoop也没接触过大数据,感觉,只是感觉,在项目中,如果真的用到了MapReduce那待排序的肯定会更加实用. 先贴上源码 pac ...

  3. [原创]java WEB学习笔记34:Session 案例 之 解决表单重复提交

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  4. 【leetcode刷题笔记】Rotate List

    Given a list, rotate the list to the right by k places, where k is non-negative. For example:Given 1 ...

  5. 为UniDBEdit添加拖拽属性

    不知是作者Fashard的疏忽还是有意,UniDBEdit的拖拽属性居然没有发布出来(其他组件都已发布).加上其实也很简单. 打开source目录下的uniDBEdit.pas单元,在TUniDBEd ...

  6. 算法(Algorithms)第4版 练习 1.5.3

    id数组和treesize数组变化情况: 0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 10 components 9 0 1 2 3 4 5 6 7 8 9 1 1 ...

  7. 英语发音规则---Z字母

    英语发音规则---Z字母 一.总结 一句话总结:字母Z的名称zed /zed/,美式英语的称zee /zi:/,少数方言(如香港)读izzard /'izəɹd/. 1.字母Z在单词中发[z]? pu ...

  8. C#--父子页面传值、刷新(showModalDialog)

    父页面: var obj = new Object(); obj.name="name"; var rtnValue=window.showModalDialog("ch ...

  9. ES _source字段介绍——json文档,去掉的话无法更新部分文档,最重要的是无法reindex

    摘自:https://es.xiaoleilu.com/070_Index_Mgmt/31_Metadata_source.html The _source field stores the JSON ...

  10. Android 中对于图片的内存优化方法

    Android 中对于图片的内存优化方法,需要的朋友可以参考一下     1. 对图片本身进行操作 尽量不要使用 setImageBitmap.setImageResource. BitmapFact ...