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

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

首先上代码

前台:

  1. <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
  2. <table width="100%" border="" cellspacing="" cellpadding="">
  3. <tr>
  4. <td><a href="#" onclick="add()">添加</a></td>
  5. <td><a href="#" onclick="del()">删除</a></td>
  6. <td><a href="#" onclick="select()">查询</a></td>
  7. <td><a href="#" onclick="update()">修改</a></td>
  8. </tr>
  9. </table>
  10. <script type="text/javascript">
  11. function add(){
  12. $.ajax({
  13. type:"POST",
  14. url:"lll.do",
  15. data:{id:"添加11111111111"}});
  16. }
  17.  
  18. function del(){
  19. $.ajax({
  20. type:"DELETE",
  21. url:"lll.do",
  22. data:{id:"删除11111111111"}});
  23. }
  24.  
  25. function select(){
  26. $.ajax({
  27. type:"GET",
  28. url:"lll.do",
  29. data:{id:"查询3333333333"}});
  30. }
  31.  
  32. function update(){
  33. $.ajax({
  34. type:"PUT",
  35. url:"lll.do",
  36. data:{id:"修改4444444"}});
  37. }
  38. </script>

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

  1. GETSELECT):从服务器查询,可以在服务器通过请求的参数区分查询的方式。
  2. POSTCREATE):在服务器新建一个资源,调用insert操作。
  3. PUTUPDATE):在服务器更新资源,调用update操作。
  4. DELETEDELETE):从服务器删除资源,调用delete语句

再看后台代码:

  1. @RequestMapping(value = "/lll.do", method = RequestMethod.DELETE)
  2. @ResponseBody
  3. public String test(String id){
  4. System.out.println("删除");
  5. System.out.println(id);
  6. return id;
  7. }
  8.  
  9. @RequestMapping(value = "/lll.do", method = RequestMethod.POST)
  10. @ResponseBody
  11. public String test1(String id){
  12. System.out.println("添加");
  13. System.out.println(id);
  14. return id;
  15. }
  16.  
  17. @RequestMapping(value = "/lll.do", method = RequestMethod.PUT)
  18. @ResponseBody
  19. public String test2(String id){
  20. System.out.println("修改");
  21. System.out.println(id);
  22. return id;
  23. }
  24.  
  25. @RequestMapping(value = "/lll.do", method = RequestMethod.GET)
  26. @ResponseBody
  27. public String test3(String id){
  28. System.out.println("查询");
  29. System.out.println(id);
  30. return id;
  31. }

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

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

  1. 添加 //post
  2. 添加11111111111
  3.  
  4. 删除 //delete
  5. null
  6.  
  7. 修改 //put
  8. null
  9.  
  10. 查询 //get
  11. 查询

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

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

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

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

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

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

  1. 查询
  2. 查询3333333333

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

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

  1. //加入@RequestBody
  2. (@RequestBody String id)
  3.  
  4. 结果如下:
  5. 删除
  6. id=%E5%%A0%E9%%A411111111111
  7.  
  8. 修改
  9. id=%E4%BF%AE%E6%%B94444444

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

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

  1. 方法一:
  2. function del(){
  3. var data={id:"删除11111111111"};
  4. $.ajax({
  5. type:"DELETE",
  6. url:"lll.do",
  7. data:JSON.stringify(data)//使用JSON.stringify()将JSON对象转化成JSON字符串
  8. });
  9. }
  10.  
  11. 方法二:
  12. function update(){
  13. var data='{id:"删除11111111111"}';//直接定义JSON字符串
  14. $.ajax({
  15. type:"PUT",
  16. url:"lll.do",
  17. data:data});
  18. }

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

  1. 查询
  2. 查询3333333333
  3.  
  4. 添加
  5. 添加11111111111
  6.  
  7. 修改
  8. {id:"删除11111111111"}
  9.  
  10. 删除
  11. {"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. 数组元素的删除 【vector】

    7-5 数组元素的删除(5 分) 完成数组元素的移动功能:假设数组有n个元素,输入一个数x,把数组的第x个位置的元素删除了,后面的元素依次前进一个位置. 重复若干次这样的删除,得到最后的结果. 输入格 ...

  2. Hadoop1.x Shell命令

    refer to http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html FS Shell 调用文件系统(FS)Shell命令应使用 bin/h ...

  3. Python map,reduce,filter,apply

    map(function, iterable, ...) map()函数接收两个参数,一个是函数,一个是可迭代的对象,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回. 基本等 ...

  4. Oracle数据库体系结构(4)oracle控制文件

    控制文件的概述 1.控制文件是oracle数据库非常重要的物理文件,描述了整个数据库的物理结构信息,包括数据库名称.数据文件与重做日志文件的名称与位置,日志序列号等信息.数据库实例根据初始化参数CON ...

  5. Tornado--基于H5图片的上传

    日记 好久没有分享过东西,一直在学习状态,学的并不好很多东西都没有,也写了很多demo,后续整理出来在分享,就不分享了,不为什么因为今天周六,好不容易双休,大早上的一个人醒来,刷刷知乎,听音乐.分享一 ...

  6. hd acm1013

    Problem Description(数根) The digital root of a positive integer is found by summing the digits of the ...

  7. NOIP前的一些计划

    一些想法 距离NOIP2018只剩下一个星期的时间了,通过这几天在长郡的考试,渐渐感觉还有好多东西自己还不够熟练,也有些东西到现在还不会,现将NOIP前的一些计划列在这里,希望能在考前把他们全部完成吧 ...

  8. JQuery- JQuery学习

    jQuery与JavaScript加载页面的区别 1.JavaScript传统的方式页面加载会存在覆盖问题,加载比jQuery慢(整个页面加载完毕<包含里面的其他内容,比如图片>) 2.j ...

  9. BZOJ 1965 [Ahoi2005]SHUFFLE 洗牌:快速幂 + 逆元

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1965 题意: 对于扑克牌的一次洗牌是这样定义的,将一叠N(N为偶数)张扑克牌平均分成上下两 ...

  10. Linux各个文件夹的主要作用 (源地址

    (源地址blog.csdn.net/lonelysky/article/details/5374230,侵删) linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev ...