由于一些需求,要对referrer url的参数进行解析,但参数经常会出现很多通过不同编码的文字。
例如"广东广州"通过不同字符编码的情况:
utf-8:%E5%B9%BF%E4%B8%9C%E5%B9%BF%E5%B7%9E
gbk:%B9%E3%B6%AB%B9%E3%D6%DD
在解码时无法指定是编码进行解码。这样容易造成乱码。
实际上是有办法可以知道这字符串是通过什么编码的来的。代码如下
/**
*
* @author onedear
*
*/
public class CharsetUtil {
private static String[] charsets = new String[]{"utf-8" , "gbk"};
public static String getCharset(String word) {
for(String charset : charsets) {
try {
String decodeWord = URLDecoder.decode(word, charset);
String encodeWord= URLEncoder.encode(decodeWord, charset);
if(word.equals(encodeWord))
return charset;
} catch (UnsupportedEncodingException e) {
continue;
}
}
return "utf-8";
}
}
用一个编码对字符串是解码再编码,的出来的值如果跟一开始的值一样,则说明这个编码是对的。
原理会尽可能的补上
分享到:
相关推荐
解决思路:进行Base64前先进行URL编码,在进行URL编码的时候,注意设置不需要SpaceAsPlus选项。 javascript代码: let decodedData = window.atob(JSONStr); let decodedData1 = decodeURIComponent(decodedData)...
asp.net乱码解决方法 1、从IE地址栏中直接输入这个地址,访问没错; 2、做一个静态页,其中包括这个超链接,点击访问也没错; 3、就是把这个链接添加到这个功能块中,点击访问那边接收到的是乱码。 一...
本文总结分析了.Net获取URL中文参数值的乱码问题解决方法。分享给大家供大家参考,具体如下: 解决方法: 1.设置web.config文件 2.传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码。 string ...
PHP fopen 读取带中文URL地址的一点见解PHP中文URL编解码(urlencode()rawurlencode()php中解析带中文字符的url函数分享php中url传递中文字符,特殊危险字符的解决方法php下目前为目最全的CURL中文说明php url地址栏传...
为什么说乱码是中国程序员无法避免的话题呢?这个主要是编码机制上的原因,大家都知道中文和英文的编码格式不一样,解码自然...这篇文章就给大家分享了Java中URL传中文时乱码的解决方法,有需要的朋友们可以参考借鉴。
php地址栏传中文$_GET下来后乱码,urlencode和urldecode用法详解url编码语法: string urlencode(string str);...url解码还原 URL 编码字符串。语法: string urldecode(string str);返回值: 字符串函数
1.配置文件web.config中 在节中加上整个网站的编码方式。 ”GB2312″ requestEncoding=”GB2312″ responseEncoding=”GB2312″/> 这样参数就以gb2312的... 然后在接收页解码: string mm = Server.URLDecode(Requext
主要介绍了Java在web页面上的编码解码处理及中文URL乱码解决,文中所介绍的两种使用过滤器解决中文链接乱码的方法非常有效,需要的朋友可以参考下
主要介绍了escape编码与unescape解码汉字出现乱码的解决方法,需要的朋友可以参考下
ASP.NET的字符编码问题真是搞得人头疼,其中的中文很容易产生各种乱码问题,而这些乱码归根结底都是因为使用编码方式不匹配造成的。 因为常常需要通过URL字符串在不同页面间传递参数时遇到中文,必须进行编码和解码...
unquote方法对应javascript中的urldecode方法,它对url进行解码,把类似”%xx”的字符替换成单个字符,例如:“法国红酒”解码后会转换成“法国红酒”,但是使用过程中,如果姿势不对,最终转换出来的字符会是乱码...
虽然escape()、encodeURI()、encodeURIComponent()三种方法都能... 以下是JS下对URL进行编/解码的各种方法: escape 方法:返回一个可在所有计算机上读取的编码 String 对象。 function escape(charString : String) :
解决AJAX中文乱码常用的两种方法 1. 在客户端进行encodeURI(utf-8也可以不做,默认),在服务器端将iso-8859-1编码转为utf-8编码 2.在客户端进行两次encodeURI,在服务器端进行一次转换。 第2种方法能解决问题的...
一直以为,只有 Request.QueryString 接收url查询字符串含中文时可能会乱码(做好编解码工作,很容易可以避免),碰到的时候,才知道 Request.Form 接收表单的值中含中文也会乱码,以前真是很傻很天真很无知。
cookie储存中文是会乱码的,在使用cookie储存中文的时候需要使用UrlEncode编码,同时读取cookie中的中文时需要使用功能UrlDecode解码。 正文 Cookie是保存在客户端硬盘或内存中的一小段文本信息,如网站、用户、会话...
在做ajax中的post时,发现在服务器端取得数据时总是乱码,网上看了些解决方法也搞不定,我post过去时是xml形式,由于乱码服务器端xml也解析不了或出错。于是在post前先把它编码,到服务器端再解码,这样问题解决了,...
解决方法如下: 1、在JS里对中文参数进行两次转码 代码如下: var login_name = document.getElementById(“loginname”).value; login_name = encodeURI(login_name); login_name = encodeURI(login_name); 2...
以下是JS下对URL进行编/解码的各种方法: escape方法:就对@*+/ A-Z 0-9 a-z这些字符不编码,其它非ASCII字符都会编码以%XX编码替换,解码使用unescape,escape 方法不能用来对“统一资源标识符”(URI) 进行编码。...
URL解码器.exe Win2000XP启动详解.txt Win2000优化技巧.txt Win2000使用纯DOS的方法.txt Win2000进程.txt windows下的EXE文件.txt Windows常用命令集.txt Windows系统安装.txt WinXP中对文件进行加密.txt ...
但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至导致的乱码问题。 例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是UTF-8),使用escape()转换传输中文字串...