The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
praynise

请教大家, golang 确定一个 GBK 字符集的真实长度,除了先转成 UTF8 再通过 runeCountIoString 以外,还有啥可以不经过字符集转换的方法么?

  •  
  •   praynise · Jun 6, 2019 · 3180 views
    This topic created in 2543 days ago, the information mentioned may be changed or developed.
    请教大家,golang 确定一个 GBK 字符集的真实长度,除了先转成 UTF8 再通过 runeCountIoString 以外,还有啥可以不经过字符集转换的方法么?
    GBK 转 UTF8 总怕会有些生僻字转换不成功导致识别错误的情况发生…
    4 replies    2019-06-06 11:15:55 +08:00
    7sDream
        1
    7sDream  
       Jun 6, 2019
    自己扫一遍应该也可以。

    GBK 是变长编码,ASCII 部分的字符一个字节,其他字符两个字节。所以看到 00-7F 之间的 byte 就 i++ c++,看到 80-FF 就 i+=2 c++

    参考: https://zh.wikipedia.org/wiki/%E6%B1%89%E5%AD%97%E5%86%85%E7%A0%81%E6%89%A9%E5%B1%95%E8%A7%84%E8%8C%83#%E7%BC%96%E7%A0%81%E6%96%B9%E5%BC%8F
    BOYPT
        2
    BOYPT  
       Jun 6, 2019
    GBK 不是定长的么,除以 2 不就好了(
    另外怎么可能 GBK 转 UTF8 不成功,unicode 肯定包括 GBK 所有字符。
    BOYPT
        3
    BOYPT  
       Jun 6, 2019
    不好意思没看 1 楼的~~打脸了~~
    听 1 楼的吧!
    7sDream
        4
    7sDream  
       Jun 6, 2019
    @7sDream #1 当然,这么做你得先保证你的字节流一定是有效的 GBK 串,因为 GBK 并不完整覆盖双字节的所有情况。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   865 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 22:03 · PVG 06:03 · LAX 15:03 · JFK 18:03
    ♥ Do have faith in what you're doing.