为什么有些繁体字用 gbk 编码 UrlEncode 和 gbk 编码表不一致?

2019-06-26 01:57:25 +08:00
 fqxufo
比如繁体字"華",在经过 UrlEncode ( http://www.atool9.com/urlencode.php )之后:变成了“%C8A ”,但是查询 gbk 编码表( http://ff.163.com/newflyff/gbk-list/ ),对应的却是“ C841"呢?
1797 次点击
所在节点    问与答
6 条回复
weyou
2019-06-26 02:17:36 +08:00
A == %41
msg7086
2019-06-26 03:04:38 +08:00
%C8 %41
%C8 A
fqxufo
2019-06-26 08:22:34 +08:00
@msg7086 能否再解释清楚一点呢?如果是二次 urlencode,为什么第一个百分号不会被继续转译?非常感谢
msg7086
2019-06-26 08:38:24 +08:00
@fqxufo 没有二次转译啊。
華 是 0xC841
0xC8 转译成%C8
0x41 就是 A,可以转译成%41,也可以不转译,保留原样 A。
msg7086
2019-06-26 08:42:52 +08:00
比如 荙 这个字,是 0xC751。
0xC7 转译成%C7
0x51 是 Q,也可以转译成%51

所以%C7Q 或者%C7%51 都可以。
fqxufo
2019-06-26 08:54:38 +08:00
@msg7086 非常感谢您的回答。还是我太蠢,一直在纠结二次转译上面,没有意识到 0x41 就是 ascii 里 A 的码位。

所以我现在想使用 TextDecoder ( https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder )转码 gbk,直接先把所有两位字符转换为对应的数字,然后把整体 Uint8Array,最后用 gbk 编码方式的 TextDecoder 处理就可以了吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/577478

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX