硬汉嵌入式论坛

 找回密码
 立即注册
查看: 8584|回复: 7
收起左侧

[emWin] C文件的UTF-8编码是这个样子吗?

[复制链接]

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
发表于 2014-12-22 22:08:07 | 显示全部楼层 |阅读模式
为了使用xbf字库,参考教程,MDK4.74中把程序的编码改为UTF8,就成了这个样子了,所有汉字都是十六进制显示! 怎么搞?
ScreenHunter_79 Dec. 22 22.05.jpg
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
 楼主| 发表于 2014-12-22 22:10:32 | 显示全部楼层
C语言设置为ANSI编码就是显示正常的,只是每个汉字的部分需要光标移动两次。 难道为了xbf字体,就只能用这种难懂的机器码?
ScreenHunter_80 Dec. 22 22.09.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2014-12-22 22:32:39 | 显示全部楼层
MDK本身支持的UTF-8没有用过。
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
 楼主| 发表于 2014-12-23 10:04:00 | 显示全部楼层
在amobbs上找到了相似的答案:

我嘞个去!被字符编码整晕了,unicode,ANSI,UTF-8,GB2312。。。


新版mdk(4.6,4.7)支持直接显示中文了,但光标老是半个半个的跳,超级不爽!


按以前的解决方法,edit-->configration-->editer里面的Encoding修改为Chinese GB2132。


但是!!!本来很好看的默认字体,修改GB2132以后,咋看咋觉得丑的不行~~~那个叫郁闷啊!


后来,发现不要修改成GB2132了,修改成Encode in UTF-8 without signature。。。嘿嘿!完美解决字体丑陋跟中文半个光标的问题!


然后!!!又发现问题了!TMD以前写的代码在mdk打开后竟然乱码?!我嘞个去呀!


想呀想,一点点的手动修改,多tmd恶心啊!


so!用notepad++打开乱码的.c  .h文件,格式-->转换为UTF-8编码格式!ctrl+s保存!


再在mdk中打开,漂亮的字体!完美的中文!


binggo!搞定!!!

PS:新发现!使用notepad++修改为UTF-8编码格式以后,mdk中编码格式不用修改,都不会出现光标跳半个的问题了!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2014-12-23 10:05:58 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:在amobbs上找到了相似的答案:

我嘞个去!被字符编码整晕了,unicode,ANSI,UTF-8,GB2312。。。


....... (2014-12-23 10:04) 
我的教程教程里面都讲了的,你没有看么,使用IAR更方便,IAR支持UTF-8编码,直接修改就可以了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2014-12-23 10:10:13 | 显示全部楼层
光标半个半个的跳动,使用这类的雅黑字体完美解决:http://www.armbbs.cn/forum.php?mod=viewthread&tid=2293
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
 楼主| 发表于 2014-12-23 10:33:47 | 显示全部楼层
总结一下这个故事的原因。
源文件默认是ANSI编码,GB2312是ANSI的一种。在mdk中,选择ANSI可以正常显示汉字,但是光标跳半格。选择GB2312可以正常显示汉字,光标跳一格正常。

如果在mdk中直接设定UTF-8格式,会产生乱码。因为源文件是ANSI的,mdk只是按照UTF-8读取显示,不会主动转换,所以显示成了十六进制的代码。
ANSI中一个汉字是2个字节,UTF-8中一个汉字是3个字节,所有完全对不上,而且没有规则。百度上说,只有最原始的查表的方法才能对应上。

解决办法:
1. 以后的源文件如果是GB2312或者ANSI的设定,需要用专用工具转换为UTF-8后,存盘。 然后再加入工程,并在mdk中选择UTF-8.
推荐一个小工具: CHN_Ansi2Utf8-ANSI转换UTF8工具.rar (704 KB, 下载次数: 553) 可以整个文件夹直接把ANSI转换成UTF-8.
2. UTF-8是万能编码,大统一的趋势,以后在mdk中或者notepad写文件,直接用UTF-8编码! 因为UTF-8不用转码等事情,可以支持全球的所有文字!
回复

使用道具 举报

1

主题

33

回帖

36

积分

新手上路

积分
36
发表于 2016-3-2 10:52:02 | 显示全部楼层
不知道,在MDK中使用UTF-8格式C文件后,文件中的中文到了搜索输出框后,显示是否正常,我的显示中文为乱码。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-13 06:06 , Processed in 0.278764 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表