|
楼主 |
发表于 2024-8-6 16:28:00
|
显示全部楼层
本帖最后由 jarlyyn 于 2024-8-6 04:33 PM 编辑
UNICODE?UTF8?UFT16?
在计算机领域,
unicode(统一码)是一个在计算机领域使用非常广泛的编码。
在1991年,统一码联盟成立,并发布了第一版Unicode Standard 1.0。0。1992年,也就是gb2313发布12年后,GBK发布3年前,加入CJK东亚文字支持,1993年发布1.1版
https://en.wikipedia.org/wiki/Unicode
由于统一码联盟的创建者基本是计算机领域中的龙头企业( Adobe, Apple, the Bangladesh Computer Council, Emojipedia, Facebook, Google, IBM, Microsoft, the Omani Ministry of Endowments and Religious Affairs, Monotype Imaging, Netflix, Salesforce, SAP SE, Tamil Virtual Academy, and the University of California, Berkeley)
所以再计算机领域的使用十分广泛。
对于unicode和gb18030之间的法律关系,根据unicode官网链接https://www.unicode.org/L2/L2001/01314-FAQ-GB18030.htm
程序可以在内码使用unicode,只要在输入输出时进行GB18030的转换,也能符合中国的国家标准。
另外,UTF8是一种unicde编码,但unicode不止是utf8。uncide主要有utf8,utf16,utf32 3个版本。
utf8:变长版本的unicode编码,主打每个字符长度不定。
utf16:虽然16看起来比8大,但实际上,utf16是UCS-2的扩展,在unicode初期大家觉得两个byte足以表示所有字符了,结果随着不停扩张发现不够了,只能再扩展,结果从定长边为变长,优势尽失,被unicode坑惨了。参考 https://www.zhihu.com/question/308677093/answer/3449042327
utf32:四字节定长。怎么说呢,看着utf16的经验和unicode的放飞自我的现状,早晚成为下一个utf16。
所以,看一个开发语言的编码格式,甚至能大体看出这个语言新不新
utf 8:golang ,python3
utf 16:java,javascript
ansi:c ,lua
对于unicode本身来说,一路上还是有不少小坑的,比如utf-16,比如mysql的utf8和utf8-mb4
|
|