POST请求参数中文乱码,一般使用编码拦截器就可以解决,但是GET请求是地址栏传参,这些配置就没办法解决了。而java项目一般部署在tomcat上,第一种方式就是修改tomcat的配置文件,达到中文乱码的问题,如下:

<!-- 修改前 -->
<Connector port="9090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><!-- 修改后 -->
<Connector port="9090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UFT-8" />

这种方式对于本地测试,或者部署拥有shell权限的服务器,是比较简单的,但是遇到购买web空间的站点,修改起来就没有那么容易啦,当然,你也可以选择tomcat 8及其以上的服务器空间;这些服务器默认解码方式是UTF-8。
即使是这样,有时候,我们也不想用户直接看到用户地址栏中存在一大串的中文,这样体验也不好。如果你有这样的需求,那么下面这种这样将是一个比较好的实现方式:

js请求数据前做编码处理

<script>// 这里要看清,两次encodeURI(),第一次将字符串转换为十六进制,第二次,修改转移符号(%)window.location.href = 'localhost:8080/dev/main?name' + encodeURI(encodeURI("小明"));
</script>

java后台接收参数处理

// 接收参数
String name = request.getParameter("name");
// 将接收到的参数做decode转换,还原(%)的转移字符,并以UTF-8进行解码字符串
name = URLDecoder.decode(name, "UTF-8");

如果我们有很多种种问参数这样传参,是不是很麻烦呢;如果你使用了springMVC,那么你可以注册一个自定义参数解析器,解析参数的时候,直接进行URI转换,并赋值。

这样是解决后端接收的问题了,但是前端呢?如果你使用可ajax的工具,例如axios等一些工具,也可以在请求拦截器中,重新对请求的参数进行编码

总结

URLDecoder和URIencode是比较简单的解决方式,但是真正做到项目时,我们未必能想得到,因为我们使用大量的框架,最直接的解决方式一般会去想框架有没有解决。

encodeURI和decodeURI

encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码.
UTF-8编码的格式:一个汉字来三个字节构成,每一个字节会转换成16进制的编码,同时添加上%号.

假设我们传参为“中国”,这解码方式如下
1.第一次encodeURI,按照utf-8方式获取数组[-28, -72, -83, -27, -101, -67],其中前三个为“中”,后三个为“国”;遍历数组,将数组转化为16进制[E4, B8, AD, E5, 9B, BD],最后添加上百分号[%E4, %B8, %AD, %E5, %9B, %BD],现在已经分解为单字节符。

2.第二次encodeURI,进行编码,这是会处理%号这个转义字符。不处理%以外的字符,他会把%编码为%25,这样数组就变成了最终的[%25E4, %25B8, %25AD, %25E5, %259B, %25BD],然后提交服务器。

3.服务器调用getParameter拿到请求参数为[%25E4, %25B8, %25AD, %25E5, %259B, %25BD],服务器会使用URLDecode进行处理;第一次处理不管是按照UTF-8,还是GBK,还是ISO-8859的格式编码的,都会得到[%E4, %B8, %AD, %E5, %9B, %BD],因为这一次只对%进行去转移符;然后再使用UTF-8解码一次,就得到我们的中文字符了。

GET请求参数中文乱码的解决办法相关推荐

  1. ​ SpringMVC表单请求参数的绑定,配置编码过滤器解决请求参数中文乱码问题,自定义类型转换器

    文章目录 ​ SpringMVC的参数绑定支持的数据类型 基本数据类型和字符串类型 JavaBean 包装类 Map类型 List类型 POST请求参数中文乱码的解决方法 自定义类型转换器(Date类 ...

  2. 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)

    前述: 在写这篇笔记之前,对笔记中的设计模式进行介绍: 本篇笔记中将要使用到的设计模式是:装饰(包装)设计模式 (1)装饰(包装)设计模式口诀: ①定义一个类,实现被装饰对象的接口 ②定义一个成员变量 ...

  3. linux unzip乱码,Linux 中unzip解压时中文乱码的解决办法

    Linux 中unzip解压时中文乱码的解决办法 Linux 中unzip解压时中文乱码的解决办法 当我们在linux中解压一个含有中文名字的压缩包如"资料.zip"时,如果直接使 ...

  4. 前端请求参数中文乱码问题

    1.以post方式提交 以post方式提交的请求参数中文乱码问题可以通过后端的编码过滤器解决. 可以直接使用springMVC中的编码过滤器,只需在web.xml中添加过滤器的配置即可. <fi ...

  5. GET方式请求参数中文乱码问题 [JavaWeb][Servlet]

    请求参数中文乱码问题(GET) 同样的我们要解决GET方式下的请求参数中文乱码问题,那么我们首先要知道GET请求方式之下为什么中文数据就会出现乱码? 因为我们GET方式之下的请求参数是在请求行中,是紧 ...

  6. freetds php mssql 中文乱码,PHP读取mssql json数据中文乱码的解决办法

    PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. ...

  7. Odoo12导出文件中文乱码的解决办法

    在odoo12中导出来的csv文件,用excel打开时中文乱码. 解决办法: 1.先用记事本打开,你会发现中文能正常显示,此时另存为时,编码选ANSI,保存: 2.excel打开,中文可以正常显示了

  8. HttpClient4.x中GET方式发送请求参数中文乱码处理

    HttpClient4.x GET 方式发送请求参数中文乱码处理 (非返回结果乱码) 之前尝试对HttpGet对象添加头部字符编码设置均无效,后改用参数字符编码处理后实现请求参数乱码正确处理. Htt ...

  9. MYSQL使用UTF8中文乱码终极解决办法

    转自:http://wenku.baidu.com/view/d2d4f15ba8114431b80dd81f.html MYSQL使用UTF8中文乱码终极解决办法   作者:刘明灵 liumingl ...

  10. Ubuntu系统中文乱码的解决办法

    Ubuntu系统中文乱码的解决办法 文章目录 Ubuntu系统中文乱码的解决办法 1. 安装中文语言 2. 安装语言设置的命令locale 3. 安装中文的相关字体 4. 修改语言的环境变量 4.1 ...

最新文章

  1. 【CV】图像分割二十年,盘点影响力最大的10篇论文
  2. thymeleaf 中文文档
  3. spring中的设计模式_面试:设计模式在spring中的应用
  4. 7.Mysql数据库表引擎与字符集
  5. SQL Server “Denali” ---SQL 2012 新特性
  6. Infortrend新技术解决高效与节能的矛盾
  7. c语言编程的现状,C语言编程开发发展现状分析
  8. c语言编译器安装到c盘吗,PE安装到C盘的详细教程
  9. 谷歌或Edge浏览器在开始菜单页面不显示图标
  10. 雷电模拟器打开应用权限_雷电模拟器超级用户权限怎么设置,是什么,怎么关闭【获取超级用户权限】通知提示,如何自动允许...
  11. 看了那些 Google 大神 Jeff Dean 的传说后,我跪了!
  12. python 跨行字符串_python字符串结束的标志_python-7-字符串的操作_方法_format_列表的操作...
  13. 【论文阅读】Pyramidal Convolution:Rethinking Convolutional Neural Networks for Visual Recognition
  14. 【php学习之路】微信公众帐号
  15. 拼团返利电商系统(拼返系统)v2.6
  16. 前端表格导出为excel方法合集
  17. springboot操作ES之ElasticSearch_EasyEs
  18. python control控制系统仿真再更新:使用内外环系统进行垂直起降飞行器横向控制仿真
  19. 贪心算法的最优解条件
  20. springboot执行批量插入_springboot2.1.8+elasticsearch7.3.2(三),添加文档,批量添加文档...

热门文章

  1. python 正则表达式语法大全_Python正则表达式知识汇总
  2. java 中国地图_Echarts+Java生成百度统计中国地图详细教程-Fun言
  3. 计算机等级考试Excel总成绩,计算机等级考试EXCEL练习题-6公务员考试成绩表
  4. 电源完整性之Cadence Sigrity Power DC_电热协同仿真
  5. 免费IP切换工具有用吗?
  6. 常用元器件使用方法3:电平转换芯片74LVC1T45的使用方法
  7. JS工具类(一):DateUtil.js
  8. [R语言] R语言快速入门教程
  9. Linux工具篇 | Ubuntu安装balenaEtcher镜像刻录工具
  10. adb远程(异地)连接实现投屏