1
WordTian 2019-04-27 20:40:14 +08:00 via Android
urldecode 一般只针对 ascii 码表的 0 - 127 做转换吧
gbk 的编码就不在这个范围内,怎么解? |
2
nfa5 OP @WordTian 参考下这个:
URLEncode:是指针对网页 url 中的中文字符的一种编码转化方式,最常见的就是 Baidu、Google 等搜索引擎中输入中文查询时候,生成经过 Encode 过的网页 URL。 URLEncode 的方式一般有两种,一种是传统的基于 GB2312 的 Encode ( Baidu、Yisou 等使用),另一种是基于 UTF-8 的 Encode ( Google、Yahoo 等使用)。 URLdecode:就是将 url 编码后的字符串还原成未编码的样子。 本工具分别实现两种方式的 Encode 与 Decode: 中文 -> GB2312 的 Encode -> %D6%D0%CE%C4 中文 -> UTF-8 的 Encode -> %E4%B8%AD%E6%96%87 既然能对不同编码的字符 encode 为不同的结果,为啥只能对 utf-8 的结果进行解码,gbk 的怎么办?怎么解回来。 |
3
nfa5 OP 而且我看到别人的在线工具可以实现 gbk 的解码。参考: http://tool.what21.com/url.html
|
4
chinvo 2019-04-27 20:57:50 +08:00
|
5
7sDream 2019-04-27 21:12:26 +08:00
https://docs.python.org/3/library/urllib.parse.html#urllib.parse.unquote
python 的 unquote 支持 encoding 参数。 PHP 的话,如果自带函数不支持,估计要自己实现了。 |
6
WordTian 2019-04-27 21:24:50 +08:00
@nfa5 突然想起来,在使用 URLEncode、URLdecode 的时候,一般是可以指定字符集的
比如 java 的 URLDecoder.decode(String, "UTF-8"),但是通常来说都默认用的 utf-8,用 gbk2312 的很少 估计你用的那个解码工具也是默认指定的 UTF-8 你自己写一个或者找一个字符集是 gbk2312 的解码工具就好了 |
7
Northxw 2019-04-27 21:48:00 +08:00
纯真的我进来后发现是 PHP, 但是不能空手来啊,那我就水一波经验吧...
|
10
ysc3839 2019-04-27 22:59:11 +08:00
https://www.php.net/manual/en/function.urldecode.php
翻了一下 PHP 的 manual,并没有说会返回 null。所以这是 PHP 的 bug ?或者是文档有错误? |
15
master 2019-04-28 02:07:12 +08:00
|
16
owt5008137 2019-04-28 08:44:14 +08:00 via Android
解完当做二进制 buffer,再 decode 一下不就好了么
|