博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
工作记录——UrlDecode
阅读量:5153 次
发布时间:2019-06-13

本文共 1358 字,大约阅读时间需要 4 分钟。

  Url编码大家都会遇到,一般语言也都会有默认的Url编码解码的内置函数方法等。但是Url编码的一大问题也就是字符集!看到的思路大致是,从http请求里找charset……可是,咱这需求是直接给你一个编码过的Url,要你给解出来!

      3G%E6%97%A0%E7%BA%BFVPN%E5%8F%8C%E5%8D%A1%E7%BB%91%E5%AE%9A%E8%B7 

  有些纳闷,当然,手工的去用UTF8和GBK试一下就知道了,可以如何让程序知道,编码没有错误呢!想法当然很明确,只能靠猜!

  既然猜,那就要了解一下关于字符编码的知识了……

  这里请自行去科普吧=w=

  

  /**      * 判断字符串的字符集      * @param strBytes 输入的字符串字节流      * @return 返回字符集名称      */ public static String getCharset(byte[] strBytes){
String charset = "unknown"; //默认非UTF8和GB2312 for (int i = 0; i < strBytes.length; i++) {
System.out.println(strBytes[i]); if (strBytes[i] < 128 && strBytes[i] >= 0) continue;//在ASCii码范围内的就不用判断了,直接判断后面的字符 if ((strBytes[i]&224) == 224 ) {
// UTF8的识别 System.out.println(strBytes[i]); if ((strBytes[i+1]&128) == 128) if ((strBytes[i+2]&128) == 128){
charset = "UTF8"; break; } } if ((strBytes[i]&192) == 192) {
// GBK的识别 System.out.println(strBytes[i+1]); if ((strBytes[i+1]&128) == 128){
charset = "GB2312"; break; } } } return charset;

  试了下,效果还可以的说=w=

  哦,正体还没说,对于一串未知的经过URLEndcode过的字串,先用"iso-8859-1"去decode,然后再上面的方法判断到底是何种字符集,再对原字串用该字符集进行UrlDecode就可以啦~

转载于:https://www.cnblogs.com/artoruis/archive/2011/09/16/urldecode.html

你可能感兴趣的文章