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

2022-03-16 19:46:30 +08:00
 ScepterZ

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

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

先从文件读出来 utf8 编码 01111111111

算出 Unicode 是 233

gtk 中的编号是 322

按 gtk 的方式编码,得到 01010110101010

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

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

最主要是,咱们中日韩越 CJKV 是表意文字,跟人家表音的字符数量完全不是一个量级。😂
dcsuibian
2022-03-16 20:31:48 +08:00
@dcsuibian 有不少兼容的问题--》有不少兼容的地方
eason1874
2022-03-16 20:56:44 +08:00
GBK 和 Unicode 不兼容,但查表也很快,十万个汉字,你感觉是巨大的表,实际上按 4 字节去算加起来也不到 400KB
ysc3839
2022-03-16 21:03:25 +08:00
大部分编码之间互相转换是要查表的

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

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

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

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

© 2021 V2EX