Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

windows 电脑区域设置为中国大陆时,其编码不应该用简单的 GBK 说明 #11

Open
Mq-b opened this issue Jul 22, 2024 · 4 comments

Comments

@Mq-b
Copy link
Contributor

Mq-b commented Jul 22, 2024

https://parallel101.github.io/cppguidebook/unicode/#_8

原文:

对于中国区 Windows 来说,区域设置默认是 GBK。

GBK 只为“技术规范指导性文件”,不属于国家标准。

也就是严格意义来说,它并不是具体编码,虽然大家平时都这样说。

国家质量技术监督局于2000年3月17日推出了GB 18030-2000标准,以取代GBK。GB 18030-2000除保留全部GBK编码汉字,在第二字节把能使用范围再度进行扩展,增加了大约一百个汉字及四字节编码空间,但是将GBK作为子集全部保留。请参看GB 18030

根据微软资料,GBK是对GB2312-80的扩展,也就是CP936字码表(Code Page 936)的扩展(之前CP936和GB 2312-80一模一样),最早实现于Windows 95简体中文版。虽然GBK收录GB 13000.1-93的全部字符,但GBK是一种编码方式并向下兼容GB2312;而GB 13000.1-93等同于Unicode 1.1是一种字符集,它的几种编码方式如UTF8UTF16LE等,与GBK完全不兼容。

windows 中国大陆区域,输入 chcp 均会得到:
活动代码页: 936


源自维基百科,总而言之,提到了

gb2312 -> gbk -> gb18030。

编码事情多,看情况描述吧。

@archibate
Copy link
Contributor

archibate commented Jul 22, 2024 via email

@Mq-b
Copy link
Contributor Author

Mq-b commented Jul 22, 2024

其实我很早之前想过这个问题,微软从始至终也没说过 chcp 得到 936,到底代表什么编码,从来没说过。
就是有这么个号码而已,而这个号码的意思还一直在变动,如同我上面提到的那样,很乐。

@longlongvip
Copy link

longlongvip commented Nov 26, 2024

微软在稍新一点的 CP936 中使用单字节 0x80 代表欧元字符 U+20AC,而《规范》之 GBK 编码不含此字符,来源维基百科WideCharToMultiByte 函数也可以把UTF-16 LE转为GB18030,因为 54936 就是 GB 18030 的代码页,另外 Windows 在一次更新中提供了对 GB 18030 Level 3 级别的支持。个人拙见,怎么让复杂的汉字显示得好看应该是难点。

This update improves several simplified Chinese fonts and the Microsoft Pinyin Input Method Editor (IME). They now support GB18030-2022. Characters in the Standard Chinese Characters List (GB18030-2022 implementation level 2) are available in Microsoft Yahei (regular, light, and bold), Dengxian (optional font: regular, light, and bold), and Simsun. The Simsun Ext-B font (GB18030-2022 implementation level 3) now supports Unicode CJK Unified Ideographs Extensions E and F

@longlongvip
Copy link

关于编码,或许输入法相关的资料更为详细

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants