判断URL中的中文参数是GB2312还是Utf-8编码
如两个URL字符串:
&q=%E8%A3%99%E5%AD%90&style=grid&seller_type=taobao
&q=%CE%D0%C2%D6%D4%F6%D1%B9&style=list&s=44;
上面有uft-8
编码,下面的用gb2312
编码,但是怎么自动识别呢?
参考csdn论坛讨论,解决方法有两种:
不管它是utf-8,还是 gbk, 还是....
先按 iso-8859-1 解码
然后用正则 匹配一下看是否全文符合 utf-8 规则
符合的话,认为是 utf-8, 不符合认为是 gbk
public String urlDecode(String code) throws Exception{
String tem = URLDecoder.decode(code, "iso-8859-1");
if (tem.matches("^(?:[\\x00-\\x7f]|[\\xe0-\\xef][\\x80-\\xbf]{2})+$"))
return URLDecoder.decode(code, "utf-8");
else
return URLDecoder.decode(code,"gb2312");
}
通用的判断方法:
假定他就是 GBK 的编码:
则将其解码成字节码,然后再把字节码编码为GBK,如果转换回来后与没有转换之前是相等的。这样假设成立,也就是GBK编码。
可以描述成这样:
字符串 abc 如果是GBK编码的话,经过转换
abc -> GBK -> byte -> GBK -> abc2
如果: abc == abc2 说明假设成立,他就是GBK编码,否则不相等。
代码如下:
public String decode(String code) throws Exception {
String fis = URLDecoder.decode(code, "gb2312");
String sec = new String(fis.getBytes("gb2312"), "gb2312");
if (fis.equals(sec))
return fis;
else {
return URLDecoder.decode(code, "utf-8");
}
}
判断URL中的中文参数是GB2312还是Utf-8编码的更多相关文章
- get请求url中带有中文参数出现乱码情况
在项目中经常会遇到中文传参数,在后台接收到乱码问题.那么在遇到这种情况下我们应该怎么进行处理让我们传到后台接收到的参数不是乱码是我们想要接收的到的,下面就是我的一些认识和理解. get请求url中带有 ...
- js的url中传递中文参数乱码,如何获取url中参数问题
一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: <script type=”text/javascript ...
- Js的Url中传递中文参数乱码的解决
一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: 2. 接收参数页面:test02.html 二:如何获取Url& ...
- js获取url中的中文参数出现乱码
解决方法 function getQueryString(key){ var reg = new RegExp("(^|&)"+key+"=([^&]*) ...
- url中拼接中文参数,后台接收为乱码的问题
遇到在URL中拼接中文的参数,后台拿到的数据为乱码的问题,这里来说一下问题出现的原因与解决方法. 大家比较关心的应该是解决的方法,因此先说解决方法. 解决方法 解决的方法是在客户端对这个中文参数进行编 ...
- GBK 编码时 url 中带中文参数的问题
项目中遇到的 GBK 编码问题,记录如下. 将代码精简为: <!DOCTYPE HTML> <html> <meta charset="gb2312" ...
- url中传递中文参数时的转码与解码
URL传递中文参数时的几种处理方式,总结如下: 1.将字符串转码:newString(“xxxxx”.getBytes("iso-8859-1"),"utf-8" ...
- [转]asp.net URL中包含中文参数造成乱码的解决方法
本文转自:http://www.jb51.net/article/22437.htm 问题: 前段时间,在系统中做了一个类似于友情链接的功能块,一直运行良好,直到有一天加了类似于以下的链接地址:htt ...
- JS获取URL传的值与解决获取URL中的中文参数出现乱码
大家好,我是小C, 我们在项目开发中有时需要页面与页面之间的传值,那我们可能会选择用地址栏传递参数,那另外的那个页面就需要获取地址栏里的参数,今天分享下关于地址栏怎么传递参数与获取中文参数出现乱码的解 ...
随机推荐
- java爬虫框架webmagic学习(一)
1. 爬虫的分类:分布式和单机 分布式主要就是apache的nutch框架,java实现,依赖hadoop运行,学习难度高,一般只用来做搜索引擎开发. java单机的框架有:webmagic和webc ...
- FortiGate部分用户上网慢,丢包严重
1.现状: 如图,出口internet有2条联通线路分别为liant_218和liant_61,在防火墙上使用WAN LLB,基于源IP: 2.现象: 使用liant_218的用户上网正常,使用lia ...
- 654. Maximum Binary Tree 最大节点劈开,然后左边、右边排序
[抄题]: Given an integer array with no duplicates. A maximum tree building on this array is defined as ...
- Spring注入静态变量的方法,以及CXF如何获取客户端IP
1.如果使用@Resource注解来注入静态变量的,服务器启动就会报错的.可以新增一个set方法,同时在set方法上用@Resource注解来注入. 2.或者直接在Spring的配置文件中使用< ...
- 4412 uboot上手
1,了解 print 查看UBOOT软件的环境变量 (变量名=变量) setenv.saveenv setenv abc 100 200 设置 添加一个变量值 修改一个已有的变量 ...
- django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call
Error info: django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, ...
- jsp相关笔记(三)
在往数据库的表中写入数据时,一定要与表中的每一项对应,比如表中有三项,则写入的值也应该是三类: String getTitle=request.getParameter("title&quo ...
- python中for循环的三种遍历方式
#!/usr/bin/env python# -*- coding: utf-8 -*-if __name__ == '__main__': list = ['A', 'B', 'C', 'D'] # ...
- SprirngBoot微服务之间的交互—— restTemplate
一 例:需要在storage服务中请求utils服务的某个接口(两个服务都已向同一台eureka server 注册) 步骤: 1 在utils创建需被调用的接口 @RestController @R ...
- Squid.conf配置详情
squid常用命令:/usr/local/squid/sbin/squid -z 初始化缓存空间/usr/local/squid/sbin/squid 启动/usr/local/squid/sbin/ ...