打印
[应用相关]

中文存储问题

[复制链接]
413|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hanwe|  楼主 | 2020-3-8 15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MDK编stm32程序中unicode中文存储wchar

使用特权

评论回复
沙发
yufe| | 2020-3-8 15:42 | 只看该作者
什么意思?不是很明白你说的什么,能再解释一下这个现象吗

使用特权

评论回复
板凳
yufe| | 2020-3-8 15:49 | 只看该作者
不一定是UNICONDE码;

使用特权

评论回复
地板
llia| | 2020-3-8 15:54 | 只看该作者
找个汉字转16进制的软件测试下看看;

使用特权

评论回复
5
hanwe|  楼主 | 2020-3-8 15:58 | 只看该作者
请问如何测试?
我在网上搜了“测试”两个汉字的unicode码,也查了wchar的资料。
资料说,根据系统不同,wchar一般为16位,也可能为32位,但是大多数字符数值上应该是相等的。
我自己从数组里读出来的值,我去验证了一下,不是gbk,不是big5,不是utf8,所以我很茫然

使用特权

评论回复
6
hanwe|  楼主 | 2020-3-8 16:02 | 只看该作者
有进展。
把“试”字删掉,改成如下定义
wchar_t testchar[20] = L"测";
无法编译通过, 出现如下两行提示
error:  #8: missing closing quote
  wchar_t testchar[20] = L"娴?;
而"娴”的unicode正是5A34
请帮忙解读一下,这个可能是什么原因?

使用特权

评论回复
7
hanwe|  楼主 | 2020-3-8 16:05 | 只看该作者

已搞定。
原因是mdk默认编码是utf8
解决办法是mdk的默认编码设置成utf8,但是c文件本身需要用别的工具转成ucs-2 big endian存储。

使用特权

评论回复
8
hanwe|  楼主 | 2020-3-8 16:10 | 只看该作者

我错了
搞不定
mdk先天不足,不支持ucs-2
自己改成ucs-2格式,但是只要自己一编辑,mdk就会把文件改回去utf8存储,然后就又不对了。

使用特权

评论回复
9
pengf| | 2020-3-8 16:17 | 只看该作者
是不是有这种专门的转换软件啊

使用特权

评论回复
10
liuzaiy| | 2020-3-8 16:20 | 只看该作者
哦,wchar是什么?

使用特权

评论回复
11
hanwe|  楼主 | 2020-3-8 16:23 | 只看该作者

明白了,多谢大家讨论这么多哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

979

主题

8749

帖子

4

粉丝