在项目中经常会遇到中文传参数,在后台接收到乱码问题。那么在遇到这种情况下我们应该怎么进行处理让我们传到后台接收到的参数不是乱码是我们想要接收的到的,下面就是我的一些认识和理解。

一:get请求url中带有中文参数,有三种方式进行处理防止中文乱码

1、如果使用tomcat作为服务器,那么修改tomcat配置文件conf/server.xml中,在  <Connector port="8082" protocol="HTTP/1.1"  中加入  URIEncoding="utf-8"的编码集

2、前台需要对中文参数进行编码,调用js方法encodeURI(url),将url编码,然后请求。

后台接受时,需处理String str = new String(request.getParameter("param").getBytes("iso8859-1"),"UTF-8");

原因:tomcat不设置编码时,默认是iso8859-1,即tomcat默认会以iso8859-1编码接收get参数。 以上操作是将参数以iso8859-1编码转化为字节数组,然后再以UTF-8将字节数组转化为字符串。

另外需注意在框架的使用中:request.setCharacterEncoding(encoding);只对post请求有效。而且,spring的CharacterEncodingFilter也只是做了request(和response).setCharacterEncoding(encoding);的操作。所以spring的filter配置不作用于get参数接收。

3、解决get请求,后台接受中文参数乱码处理的方法(搜索功能带参数)

(1)前台获取数据,在js中进行编码处理

encodeURI函数采用utf-8进行编码,而在服务器的进行解码时候,默认都不是以uft-8进行解码,所以就会出现乱码。

两次encodeURI,第一次编码得到的是UTF-8形式的URL,第二次编码得到的依然是UTF-8形式的URL,但是在效果上相当于首先进行了一 次UTF-8编码(此时已经全部转换为ASCII字符),再进行了一次iso-8859-1编码,因为对英文字符来说UTF-8编码和ISO- 8859-1编码的效果相同。

(2)后台解码处理

在后台接收参数时候,首先通过request.getParameter()自动进行第一次解码(可能是 gb2312,gbk,utf-8,iso-8859-1等字符集,对结果无影响)得到ascii字符,然后再使用UTF-8进行第二次解码,通常使用 Java.NET.URLDecoder("","UTF-8")方法。

两次编码两次解码的过程为:

UTF-8编码->UTF-8(iso-8859-1)编码->iso-8859-1解码->UTF-8解码,编码和解码的过程是对称的,所以不会出现乱码。

注:

1:这种两次encodeURI方式不用去知道服务器的解码方式,也可以得到正确的数据。

2:get请求建议尽量不带中文参数,如果使用建议使用两次encodeURI进行编码

3.参考资料     URL编码与两次encodeURI:http://blog.sina.com.cn/s/blog_8af112fd0102vxb7.html

转载于:https://my.oschina.net/mapp/blog/983473

get 请求 中文乱码相关推荐

  1. Spring-解决请求中文乱码问题

    Spring-解决请求中文乱码问题 参考文章: (1)Spring-解决请求中文乱码问题 (2)https://www.cnblogs.com/andyfengzp/p/6197993.html (3 ...

  2. postmain请求中午乱码_完美解决Get和Post请求中文乱码的问题

    对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题 request.setCharacterEncoding("utf-8"); ...

  3. 【Servlet】HTTP请求中文乱码的问题

    请求中文乱码 在进行请求参数传递时,经常会遇到请求数据为中文时的乱码问题,当Form表单的文本域中输入中文时会产生乱码问题,出现乱码的原因与客户端的请求编码方式(GET请求或POST请求)以及服务器的 ...

  4. Tomcat 中 GET方式 请求 中文乱码 出现的原因

    网上很多关于GET方式请求中文乱码的解决方案,大体类似. 这里主要讲一下Tomcat在处理URL参数过程中, 究竟是为什么会导致了GET方式请求的中文乱码. 一句话概括就是: Tomcat默认将单字节 ...

  5. 解决get请求中文乱码问题

    在很多情况下get请求会发生中文乱码的情况,而换做post就不会,这其中的根本原因是get请求默认的是使用"iso-8859-1"编码,接下来介绍两种种解决get请求编码的方法 1 ...

  6. html请求socket乱码,Socket http请求中文乱码有关问题

    Socket http请求中文乱码问题 各位高手,麻烦帮忙看看这个 http请求乱码问题,百思不得其解啊.... Socket http请求"http://www.gome.com.cn/e ...

  7. Get,Post请求中文乱码问题有效解决方法

    对于做Java WEB项目同学来说,中文乱码问题是一个经常遇到而又非常头痛的问题,而最容易出现乱码的环节就是在浏览器向服务器发送请求的过程,至于出现乱码的原因不是本文的关注的重点,想了解的朋友可以参考 ...

  8. 请求中文乱码_【1】执行Http请求访问网页

    向导团队 - fourkings [1]执行Http请求访问网页 1. 目标网址 我们的目标网址是当当网,url地址是 http://book.dangdang.com/ 2. 获取HTML文档内容 ...

  9. get请求中文乱码问题

    Get中文乱码解决 Get请求类型: <form action="${pageContext.request.contextPath}/addArtical.action"  ...

  10. 010_Post请求中文乱码

    一. 创建一个GBK编码的html文件, 发送post请求 1. 新建一个PostLuanMa的Web工程 2. 新建一个postGBK.html文件 3. 更改postGBK.html编码为GBK ...

最新文章

  1. vue checkbox 默认选中
  2. python查看环境路径
  3. 如何用 ajax 连接mysql数据库,并且获取从中返回的数据。ajax获取从mysql返回的数据。responseXML分别输出不同数据的方法。...
  4. 4.帧循环(游戏主循环),schedule
  5. 数学分析(Tom M.Apostol) 定理6.7
  6. linux网络编程之Listen函数参数介绍
  7. rocksdb ubuntu c++源码编译测试
  8. ESX/ESXi 主机上的每个插槽中安装了多少内存
  9. Java_MD5的使用
  10. 南阳市服务器主机销售,南阳市服务器价格
  11. PostgreSQL的中文拼音排序
  12. 如何在在线直播网站源码中,实现视频连麦直播?
  13. 微信公众平台:微信网页授权和微信支付
  14. 如何用matlab产生两列不同频率的正弦波叠加起来?
  15. UnicodeDecodeError: 'shift_jis' codec can't decode byte 0x93 in position 4: illegal multibyte sequen
  16. 解决win7 anaconda 安装 Failed to create menus
  17. 网络通过mac定位机器_如何设置Mac以充当网络时间机器驱动器
  18. matlab绘制那奎斯特曲线和bode图
  19. Choosing Teams
  20. ✨数织游戏✨:Python 制作的成本一毛钱却诚意满满的小礼物!!

热门文章

  1. java实现中国象棋4:悔棋及重新开始
  2. 愚人节的礼物---浅析
  3. 摩比信通Mobydata 开发者模式密码
  4. 简单音乐铃声(接口版)
  5. Python+requests 有道翻译接口 翻译中英文
  6. 数据结构和算法(DSA)的本质及其关系:从哲学辩证法和数学函数角度的分析
  7. windows下宝塔安装教程
  8. 华为防火墙常见问题总结
  9. 2.7 [粘贴入]命令的使用 [Ps教程]
  10. sobel边缘检测python_python实现:prewitt, laplace,sobel,scharr, canny, hed