URL地址中的中文乱码问题的解决
引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息。乱码问题就此产生了,该如何解决呢?且听本文详细道来。
1. 问题的引出
在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址。 但是,在实际的开发和使用中,确是有乱码情况的发生,在后台的读取keyword信息为乱码,无法正确读取。
2. 乱码是如何产生的?
5. 后台如何正确解析中文字符信息?
进入后台的信息,在经过二次encodeURI()之后,直接读取是无法后去正确的信息的。 需要继续如下处理:
- URLDecoder.decode("chinese string","UTF-8")
URLDecoder的decode(String str,String ecn)方法有两个参数,第一个参数为待解码的字符串,第二个参数为解码时的对应编码。
6. encodeURI, encodeURIComponent, escape
6.1 escape()函数
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
返回值:已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。
说明 :该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。不会被此方法编码的字符: @ * / +
6.2 encodeURI() 方法
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '
6.3 encodeURIComponent() 方法
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。
不会被此方法编码的字符:! * ( ) '
因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。
7. 另一种处理URL的中文乱码方案
请求端的中字符有encodeURI进行一次转码,如:
var url="/ajax?name="+encodeURI(name);
服务器端代码:
name=new String(name.getBytes("iso8859-1"),"UTF-8");
注: name为获得的字符串,iso8859-1为项目的默认字符编码,如果为中文编码gbk,gb2312等则不用这一步进行处理.
分析: 经过程序验证,结果可行的。 由此可知,浏览器本身默认的编码方式是iso8859-1的方式,即使使用了encodeURI进行了utf-8编码处理,主要的字符串内容,比如ascii字符和可见字符都还是基于iso8859-1浏览器自身的字符。原因就是这些字符在编码上和UTF-8字符串是重合的。而encodeURI之类的转义函数主要解决,特殊字符%,/之类的字符的转义问题。
URL地址中的中文乱码问题的解决相关推荐
- jquery.ajax的url中传递中文乱码问题的解决方法
jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQuer ...
- 解决URL请求中的中文乱码问题
解决URL请求中的中文乱码问题 参考文章: (1)解决URL请求中的中文乱码问题 (2)https://www.cnblogs.com/franson-2016/p/5733667.html (3)h ...
- eclipse中js中文乱码问题的解决办法
eclipse中js中文乱码问题的解决办法 参考文章: (1)eclipse中js中文乱码问题的解决办法 (2)https://www.cnblogs.com/yanggb/p/11719126.ht ...
- Meter应用中对于中文乱码的主要解决方法(转)
SampleResult中的中文乱码解决方法 对jmeter.properties进行设置,从jmeter.properties配置文件中可以找到如下行: # The encoding to be u ...
- CentOS中的中文乱码问题的解决
2019独角兽企业重金招聘Python工程师标准>>> 转载 http://www.linuxqd.com/2010/0428/187.html 在使用CentOS系统时,安装的时候 ...
- java web中的中文乱码问题和解决方法
开发过程中可能会遇到页面中的中文显示为乱码无法正常查看,出现乱码的原因很多,以下举例并提供解决方法 一.HTML页面设置的编码与页面文件格式的编码不一致 检查方法:1.查看文件的编码格式 用记事本打开 ...
- Docker中Mysql中文乱码(已解决)
解决Docker中运行的MySQL中文乱码 1.首先创建两个目录 mkdir /tmp/mysql/data mkdir /tmp/mysql/conf 2.编写hmy.cnf文件,将以下内容写到文件 ...
- URL请求中的中文乱码问题
URL提交中文出现乱码有两种办法: 1.请求端的中字符有encodeURI进行一次转码,如: var url="/getUser?name="+encodeURI(name); ...
- 总结:SpringMVC 中 GET 和 POST 方式请求中的中文乱码问题
2019独角兽企业重金招聘Python工程师标准>>> 以下是 SpringMVC 中 GET 和 POST 方式请求中的中文乱码问题的解决方法. 1,GET 方式中文乱码: 修改t ...
最新文章
- vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决
- VirtFS 虚拟化技术简介
- qq分享 设备未授权报错解决方案_QQ 注销功能终于上线,我体验了一下!
- 命令行设置Java环境变量
- 关于kubesphere metrics-server部署失败的问题
- 洛谷P7361:拜神(SA、二分、主席树、启发式合并)
- Quartus II 8.1 详解--有图---图片详解 【1讲】
- 即时通讯软件线上系统维护工作总结
- 1英寸大底手机来了 是索尼的营销噱头吗?
- Java基础——0 前言
- 2021-08-01mysql外键
- ssa/ass字幕格式全解析
- 主板风扇转不开机是什么问题,电脑开机没反应_电脑开机风扇转但无法启动主板...
- 使用CubeMX配置STM32L476RG,Timer触发ADC采集通过DMA搬运
- 抖音账号如何打造,抖音直播带货怎么做:国仁楠哥
- Win10 安装node.js
- Codeforces 161 B. Discounts (贪心)
- Linux中Lun是什么,以及和存储卷的区别
- 秃头大牛一文竟然就把SpringCloudStream(SCS)给讲明白了?
- Nylg541 最强DE 战斗力
热门文章
- 已经建好的表添加唯一性约束、主键、外键约束
- 报错:Unfortunately you can‘t have non-Gradle Java modules and Android-Gradle modules in one project
- 搭建 Mellanox ConnectX-3 EN 10/40 Gbps 网卡 DPDK 运行环境
- 数学:确定性的丧失---第八章 不合逻辑的发展:天堂之门
- 根据地区名称获得经纬度
- 分分钟玩转multiprocessing多进程编程?
- Registration Code
- Windows10 安装Redis(图文教程)
- 意出望外的一次相遇|利楚初探 OceanBase
- 智力题---100个球两个人轮流拿,每次最多拿n个,谁拿到最后一个球获胜