判断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, 我们在项目开发中有时需要页面与页面之间的传值,那我们可能会选择用地址栏传递参数,那另外的那个页面就需要获取地址栏里的参数,今天分享下关于地址栏怎么传递参数与获取中文参数出现乱码的解 ...
随机推荐
- 使用Pyquery+selenium抓取淘宝商品信息
配置文件,配置好数据库名称,表名称,要搜索的产品类目,要爬取的页数 MONGO_URL = 'localhost' MONGO_DB = 'taobao' MONGO_TABLE = 'phone' ...
- Pains and Sickness 学习笔记
Headaches can be very painful and can last for a long time. If you have a headache, your head hurts. ...
- Shell中read命令--学习
read命令 -p(提示语句) -n(字符个数) -t(等待时间) -s(不回显) 1.基本读取read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说).得到输入后,read命令将数 ...
- [leetcode]2. Add Two Numbers两数相加
You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...
- 20175234 2018-2019-2 《Java程序设计》第四周学习总结
20175234 2018-2019-2 <Java程序设计>第四周学习总结 教材学习内容总结 教材学习了子类,其重点是方法重写.对象的上转型对象和多态,强调了面向抽象编程的思想. 学习I ...
- maven 监理web war 项目
- MYSQL库,表,记录的基本操作
数据库操作 1.显示数据库 show databases; 默认数据库: mysql - 用户权限相关数据 test - 用于用户测试数据 information_schema - MySQL本身架构 ...
- VMWare 14.1 15 Pro 安装 macOS Mojave 10.14.1系统 遇到的问题解决方案
安装环境 WIN10VMware Workstation Pro 15.0.0 Build 10134415工具准备1.VMware Workstation Pro 15.0.0 Build 1013 ...
- ABP 异常处理 第四篇
1.ABP异常处理机制是通过过滤器实现的,我们查看的webAPI的异常处理,我们来看看他的源码,AbpApiExceptionFilterAttribute 继承ExceptionFilterAttr ...
- Alpha项目冲刺
一.团队成员 学号 姓名 211606361 何承华(队长) 211606356 陈宇 211606360 丁培辉 211606333 温志铭 211606343 杨宇潇 211606391 张主强 ...