我需要调整现有的非 unicode c 项目来显示汉字。由于截止日期很短,而且我是 C 和编码的新手,为了支持在 gui 应用程序中显示中文文本,我已经将系统语言环境更改为简体中文 PRC 的路线。这反过来又将项目中的编码(在 Visual Studio 2010 中)更改为简体中文(GB2312)。
除了特殊字符(例如:度数符号、上标 2 等)显示为问号外,一切正常。我相信这是因为我们过去传递 \260 即 ascii 表中度数符号的八进制值,这不再等同于 gb2312 表中的任何内容。
在键盘中显示度数符号的工作流程如下:
显示函数(数据,'\260');//将度数符号的八进制值传递到键盘
此 display_function 用于将整数输入转换为字符串以在键盘上显示:
数据->[ pos ] = (char) ch;
基本上我需要让这个(和其他特殊字符)正确显示。有没有办法使用当前设置传递这个符号?
根据 gb23212 的字符列表,该符号是受支持的,因此我目前的想法是计算出该符号的八进制值并保持现有函数不变。这些当前将值作为字符传递。使用下表:
http://ash.jp/code/cn/gb2312tbl.htm。
和下面的公式来获得八进制值:
与行关联的八进制数乘以 10 并添加到与列关联的八进制数。
我相信这会是A1E0 x 10 + 3 = 414403.
但是,当我尝试将其传递给 display_function 时,我得到“错误 C2022:'268':对于字符来说太大了”。
我要解决这个问题了吗?我不想更改现有函数,因为它们已广泛使用,但我是否需要更改函数以使用宽字符?
如果以上内容令人费解并且充满了不正确的假设,我们深表歉意!一两个星期以来,我一直在努力解决这个问题,而编码、字符集和语言环境似乎变得越来越混乱!
提前致谢