get请求中url传参中文乱码问题–集锦「建议收藏」

=================================================分享一个好友的人工智能教程。零基础!通俗易懂!风趣幽默!大家可以看看是否对自己有帮助!点击查看教程================================================= 在项目中经常会遇到中文传参数,在后台接收到乱码问题。那么在遇到这种情况下我们应该怎么…

大家好,又见面了,我是全栈君。

=================================================
分享一个好友的人工智能教程。零基础!通俗易懂!风趣幽默!大家可以看看是否对自己有帮助!

点击查看教程

=================================================

  

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

 一: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中进行编码处理

 get请求中url传参中文乱码问题--集锦「建议收藏」

             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″)方法。

 get请求中url传参中文乱码问题--集锦「建议收藏」

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

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://javaforall.net/121288.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月24日 下午12:00
下一篇 2022年2月24日 下午1:00


相关推荐

  • 面向反爬对抗的AI增强型爬虫框架:DeepSeek+Crawl4AI落地实践

    面向反爬对抗的AI增强型爬虫框架:DeepSeek+Crawl4AI落地实践

    2026年3月16日
    2
  • RealSense RGBD 深度摄像头 D435i 、D455 硬件结构及各个组件原理详解「建议收藏」

    RealSense RGBD 深度摄像头 D435i 、D455 硬件结构及各个组件原理详解「建议收藏」文章目录D435i硬件结构图D435i介绍视角知识补充标准镜头广角镜头长焦镜头广角镜头和长焦镜头的区别主要在于焦距不同、取景范围不同和拍摄对象不同。鱼眼镜头和广角镜头的区别IRLaserProjector介绍测距方式汇总3D结构光介绍RGB-D相机的TOF工作原理实际应用案例librealsenserealsense-rosD455D435i官方链接:https://www.intelrealsense.com/zh-hans/depth-camera-d435i/先来看一下实际图片硬件结构

    2026年1月20日
    4
  • 360天擎默认卸载密码_Debian(Ubuntu/Kali)下wine的从安装、使用和卸载「建议收藏」

    360天擎默认卸载密码_Debian(Ubuntu/Kali)下wine的从安装、使用和卸载「建议收藏」安装wine1、安装wine32因为32位的wine可以运行32位和64位的应用程序,而64位的只能运行64位程序而在我修改这篇文章的时候,wine5.0已经出了,亲测这种方法安装的就是5.0版本的打开终端,依次执行sudodpkg–add-architecturei386sudoaptupdatesudoaptinstallwine如果安装过程有错误提示,一般按着提示输入命令…

    2026年3月8日
    5
  • php curl用法_php项目实战

    php curl用法_php项目实战例1,curl扩展开启的步骤:1、将PHP文件夹下的三个文件php_curl.dll,libeay32.dll,ssleay32.dll复制到system32下;2、将php.ini(c:WINDOWS目录下)中的;extension=php_curl.dll中的分号去掉;3、重启apache或者IIS。例2,PHP开启curl_init在测试模拟登录时,出现“Calltoundefined…

    2022年8月30日
    6
  • vue实现上传文件[通俗易懂]

    vue实现上传文件[通俗易懂]Vue实现上传文件

    2022年8月16日
    10
  • 动手强化学习(六):DQN 算法

    动手强化学习(六):DQN 算法动手强化学习 五 时序差分算法 TemporalDiff 1 简介 2 CartPole 环境 3 DQN1 简介 在前面讲解讲解的 Q learning 算法中 我们以矩阵的方式建立了一张存储每个状态下所有动作 Q 值的表格 表格中的每一个动作价值 Q s a Q s a Q s a 表示在状态 sss 下选择动作 aaa 然后继续遵循某一策略预期能够得到的期望回报 然而 这种用表格存储动作价值的做法只在环境的状态和动作都是离散的 并且空间都比较小的情况下适用 我们之

    2026年3月16日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号