`

UIRL编码

 
阅读更多

转载

URL传参中文对于程序员来说,是个很头疼的问题吧。虽然在尽量避免使用中文参数,但总有避免不了的时候。现就自己的经验,总结如下:

1.将字符串转码:new String(“xxxxx”.getBytes("iso-8859-1"),"utf-8")

这种转码方式有很大的弊端,因为它是使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中,然后通过使用指定的字符编码将生成的byte 数组解码,构造一个新的String字符串。这种情况就有可能遇到的情况是,不能将一个汉字全部解码完。这样,前边的都能正常显示,但是最后一个字可能是 乱码。

所以不建议使用这种方式。



2.在传参前转码,接收参数后再转码回来。

这种方式有两种:

第一种:

传参前:使用java.net.URLEncoder.encode("xxxx",“utf-8"),将中文转为16进制字符。

接收参数后:使用java.net.URLDncoder.decode("xxxx",“utf-8")将16进制字符转为中文。

这种方式需要注意的是,在使用encode转码后,会出现特殊字符,这时候,就需要将特殊字符替换为相应的16进制。因为特殊字符在url路径中做为参数传递时,也是乱码。



第二种:

传参前:encodeURI(“xxxx”)  。

接收参数后:使用java.net.URLDncoder.decode("xxxx",“utf-8")将16进制字符转为中文。

这种方式需要注意的是,在使用encodeURI转码后,会出现特殊字符,这时候,就需要将特殊字符也转码,所以使用两次encodeURI,即:

encodeURI(encodeURI(“xxxx”))。



第三种:修改tomcat配置文件:

在Tomcat的安装目录下conf文件夹中的server.xml文件,将配置访问端口的地方加上URIEncoding=“UTF-8"即 可。  <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" URIEncoding="UTF-8">

 

第四种:添加URL过滤

在web.xml中加如下过滤器:  org.springframework.web.filter.CharacterEncodingFilter过滤器.

    <!-- 过滤器 过滤乱码 -->
<filter>
   <filter-name>characterEncodingFilter</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
   <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
   </init-param>
   <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
   </init-param>
</filter>
分享到:
评论

相关推荐

    基于Python的蓝桥杯竞赛平台的设计与实现

    【作品名称】:基于Python的蓝桥杯竞赛平台的设计与实现 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:基于Python的蓝桥杯竞赛平台的设计与实现

    python实现基于深度学习TensorFlow框架的花朵识别项目源码.zip

    python实现基于深度学习TensorFlow框架的花朵识别项目源码.zip

    3-9.py

    3-9

    郊狼优化算法COA MATLAB源码, 应用案例为函数极值求解以及优化svm进行分类,代码注释详细,可结合自身需求进行应用

    郊狼优化算法COA MATLAB源码, 应用案例为函数极值求解以及优化svm进行分类,代码注释详细,可结合自身需求进行应用

    563563565+3859

    5635356

    客户培训课程–金字塔式写作方法.ppt

    客户培训课程–金字塔式写作方法.ppt

    工具与方法工作手册.ppt

    工具与方法工作手册.ppt

    Image_1715565894150.jpg

    Image_1715565894150.jpg

    setuptools-34.3.2-py2.py3-none-any.whl

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    C语言快速排序.doc

    快速排序 C语言快速排序.doc C语言快速排序.doc C语言快速排序.doc C语言快速排序.doc C语言快速排序.doc C语言快速排序.doc

    基于Python+MobileFaceNet的静默活体检测系统的设计与实现

    【作品名称】:基于Python+MobileFaceNet的静默活体检测系统的设计与实现 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 2、实验环境 Windows 10(64位) CPU:AMD Ryzen 7 5800H RAM:16G GPU:NVIDIA RTX3060 开发工具:IntelliJ IDEA以及PyCharm 相关配置及版本: Chrome 90.0.4430.212 SpringBoot 2.2.6 Java JDK8 MyBatis 2.1.1 Mysql 8.0.25 Python 3.8 pytorch 1.7.1 torchvision 0.8.2 numpy 1.18.5 tensorboard 2.4.1 pandas 1.2.3 cuda 11.0.2 cudnn 11.2 torch 1.8.1 torchvision 0.9.1 3、模型训练命令 python train.py 4、模型测试命令

    基于JavaScript的交通时空大数据分析挖掘系统源码+运行说明.zip

    基于JavaScript的交通时空大数据分析挖掘系统源码+运行说明 项目描述 项目核心是百度地图 AMap和 echarts,用百度地图提供的API搭建的地图,项目中用到的有热力图、散点图和连线图,图表类型是由echarts提供的图表进行展示,包括饼图、柱状图 安装依赖 javascript

    麦肯锡—xx集团战略咨询项目建议书.ppt

    麦肯锡—xx集团战略咨询项目建议书.ppt

    pytest-6.2.1-py3-none-any.whl

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡--战略咨询培训手册.ppt

    麦肯锡--战略咨询培训手册.ppt

    graspnet-pybullet

    graspnet-pybullet

    xx电器品牌战略和营销组织架构-SHA----d.ppt

    xx电器品牌战略和营销组织架构-SHA----d.ppt

    麦肯锡-战略规划模板.ppt

    麦肯锡-战略规划模板.ppt

    短视频拍摄-课程网盘链接提取码下载 .txt

    短视频拍摄-课程网盘链接提取码下载 .txt

    ruby源码资源包,冲冲冲!

    Ruby是一种为简单快捷面向对象编程而创建的脚本语言,由日本人松本行弘(まつもとゆきひろ,英译:Yukihiro Matsumoto,外号matz)开发,遵守GPL协议和Ruby License。Ruby的作者认为Ruby > (Smalltalk + Perl) / 2,表示Ruby是一个语法像Smalltalk一样完全面向对象、脚本执行、又有Perl强大的文字处理功能的编程语言。 Ruby以7月的诞生石ruby(红宝石)命名,是因为Perl的发音与6月的诞生石pearl(珍珠)相同。Ruby明显比其他类似的编程语言(如Perl或Python)年轻,又因为Ruby是日本人发明的,所以早期的非日文资料和程序都比较贫乏。

Global site tag (gtag.js) - Google Analytics