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

文本编辑器转换编码的功能是如何实现的?

  •  
  •   ScepterZ · 2022-03-16 19:46:30 +08:00 · 1152 次点击
    这是一个创建于 743 天前的主题,其中的信息可能已经有所发展或是发生改变。

    具体一点,指的是字符集不兼容的编码

    比如一个字 你(以下均为瞎编的数

    先从文件读出来 utf8 编码 01111111111

    算出 Unicode 是 233

    gtk 中的编号是 322

    按 gtk 的方式编码,得到 01010110101010

    他怎么知道 Unicode 中的 233 和 gtk 中的 322 是一个字呢,难道要维护一个巨大的各种字符集之间的映射关系么,还是说大部分都是互相兼容的,两边都是 233

    7 条回复    2022-03-16 21:03:25 +08:00
    dcsuibian
        1
    dcsuibian  
       2022-03-16 20:02:11 +08:00
    猜测,既然 Unicode 是统一的,那就对应到 Unicode 。然后就可以互相转了吧。
    想成一个图的话,每个字符集是一个点,两两字符集之间的关系一条边。原来数量级是 n^2 的话,那现在就是 n 了。
    ScepterZ
        2
    ScepterZ  
    OP
       2022-03-16 20:03:57 +08:00
    @dcsuibian 这样确实能省不少,不过不知道这种东西是谁维护的,感觉非常累的样子,还得了解多种字符集
    shuax
        3
    shuax  
       2022-03-16 20:09:29 +08:00 via Android
    有些是可以直接算法转换,有些要查表,表也不是很大吧。
    dcsuibian
        4
    dcsuibian  
       2022-03-16 20:31:11 +08:00
    @ScepterZ 从没想过这个问题。打开 Vscode 看了一下,看到了大概四五十个选项,而且前缀不少还一样,估计有不少兼容的问题,少部分可以特判。既然要统一,至少可以分摊到国家,时间、人员什么的又可以分摊下去。
    还有很多地方可以压水分吧。

    最主要是,咱们中日韩越 CJKV 是表意文字,跟人家表音的字符数量完全不是一个量级。😂
    dcsuibian
        5
    dcsuibian  
       2022-03-16 20:31:48 +08:00
    @dcsuibian 有不少兼容的问题--》有不少兼容的地方
    eason1874
        6
    eason1874  
       2022-03-16 20:56:44 +08:00
    GBK 和 Unicode 不兼容,但查表也很快,十万个汉字,你感觉是巨大的表,实际上按 4 字节去算加起来也不到 400KB
    ysc3839
        7
    ysc3839  
       2022-03-16 21:03:25 +08:00 via Android
    大部分编码之间互相转换是要查表的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2587 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:54 · PVG 23:54 · LAX 08:54 · JFK 11:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.