硬汉嵌入式论坛

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

[开发工具] 使用MDK的AC6无法正常使用GBK编码汉字的解决办法

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2020-4-7 07:51:39 | 显示全部楼层 |阅读模式
根本原因:

MDK的AC6显示中文,工程的源文件必须要用UTF-8编码,否则编译会有问题。

解决办法:

工程中使用中文主要有两种情况,
1、printf打印使用

这种情况比较简单,仅需将printf的中文源文件修改为UTF-8编码即可,然后串口软件要支持UTF-8编码,像SecureCRT,H7-TOOL上位机是支持的。

2、LCD显示汉字使用

这种也分两种:

(1)如果是emWin使用,比较简单,本身中文显示就支持UTF-8编码
(2)裸机显示,这种的参考此贴修改即可:

UTF-8字符串转GBK实现
http://www.armbbs.cn/forum.php?mod=viewthread&tid=97029

回复

使用道具 举报

609

主题

3049

回帖

4896

积分

至尊会员

积分
4896
发表于 2020-4-7 23:07:55 | 显示全部楼层
貌似使用 ac6 的话, 右键的 go to define 功能还是不能够使用啊 ?

感觉 使用 ac6 也没有多大意义吧 ??? 还是说另有他意 ????
回复

使用道具 举报

210

主题

1043

回帖

1683

积分

至尊会员

More we do, more we can do.

积分
1683
发表于 2020-4-7 23:28:57 | 显示全部楼层
几年前遇到过差不多的问题,后来设置了--locale --multibyte_chars
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2020-4-8 00:18:22 | 显示全部楼层
hpdell 发表于 2020-4-7 23:07
貌似使用 ac6 的话, 右键的 go to define 功能还是不能够使用啊 ?

感觉 使用 ac6 也没有多大意义吧 ???  ...

1、可以使用,只是偶然有跳转不正常。
2、AC5要被淘汰了,ARM家的Mbed OS已经正式发文,不再支持AC5
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2020-4-8 00:19:45 | 显示全部楼层
emwin 发表于 2020-4-7 23:28
几年前遇到过差不多的问题,后来设置了--locale --multibyte_chars

对,这个是MDK5 AC5无法正常编译UTF-8编码文件的方案。AC6倒是不用加这个了。
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2020-4-8 15:56:41 | 显示全部楼层
我用AC6编译GBK编码汉字为什么没有问题?只是有一堆警告../Src/main.c(225): warning: illegal character encoding in string literal [-Winvalid-source-encoding],这个警告有没有什么办法屏蔽掉?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2020-4-8 16:23:46 | 显示全部楼层
爱恋之燕 发表于 2020-4-8 15:56
我用AC6编译GBK编码汉字为什么没有问题?只是有一堆警告../Src/main.c(225): warning: illegal character e ...

AC6不能编译GBK编码汉字了,得用UTF-8。

回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
发表于 2021-6-30 13:11:37 | 显示全部楼层
可是我用了UTF-8以后,串口助手输出乱码怎么办?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2021-7-1 10:15:59 | 显示全部楼层
alicexhong 发表于 2021-6-30 13:11
可是我用了UTF-8以后,串口助手输出乱码怎么办?

使用支持UTF-8的串口助手,比如我们的H7-TOOL上位机,就支持UTF-8和GBK两种编码。

或者使用通用的SecureCRT
QQ截图20210701101546.jpg


回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2022-9-6 16:10:37 | 显示全部楼层
MiscControls加入-Wno-invalid-source-encoding屏蔽这个警告
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2022-9-7 01:51:37 | 显示全部楼层
咪啪 发表于 2022-9-6 16:10
MiscControls加入-Wno-invalid-source-encoding屏蔽这个警告

楼主位是早期的解决办法,后来改了,就是你说的这个。

屏蔽MDK AC6使用中文GBK编码的警告方法,让大家可以继续使用GBK编码汉字
https://www.armbbs.cn/forum.php? ... id=98670&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 16:12 , Processed in 0.273833 second(s), 36 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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