V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fqxufo
V2EX  ›  问与答

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

  •  
  •   fqxufo · 2019-06-26 01:57:25 +08:00 · 1942 次点击
    这是一个创建于 1978 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如繁体字"華",在经过 UrlEncode ( http://www.atool9.com/urlencode.php )之后:变成了“%C8A ”,但是查询 gbk 编码表( http://ff.163.com/newflyff/gbk-list/ ),对应的却是“ C841"呢?
    6 条回复    2019-06-26 08:54:38 +08:00
    weyou
        1
    weyou  
       2019-06-26 02:17:36 +08:00 via Android   ❤️ 1
    A == %41
    msg7086
        2
    msg7086  
       2019-06-26 03:04:38 +08:00
    %C8 %41
    %C8 A
    fqxufo
        3
    fqxufo  
    OP
       2019-06-26 08:22:34 +08:00 via iPhone
    @msg7086 能否再解释清楚一点呢?如果是二次 urlencode,为什么第一个百分号不会被继续转译?非常感谢
    msg7086
        4
    msg7086  
       2019-06-26 08:38:24 +08:00
    @fqxufo 没有二次转译啊。
    華 是 0xC841
    0xC8 转译成%C8
    0x41 就是 A,可以转译成%41,也可以不转译,保留原样 A。
    msg7086
        5
    msg7086  
       2019-06-26 08:42:52 +08:00   ❤️ 1
    比如 荙 这个字,是 0xC751。
    0xC7 转译成%C7
    0x51 是 Q,也可以转译成%51

    所以%C7Q 或者%C7%51 都可以。
    fqxufo
        6
    fqxufo  
    OP
       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 处理就可以了吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2701 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 03:09 · PVG 11:09 · LAX 19:09 · JFK 22:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.