找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1026|回复: 4
打印 上一主题 下一主题
收起左侧

keil中文选择GB2312 编译结果还是UTF-8,怎么解决

[复制链接]
跳转到指定楼层
楼主


如题 看图 做stm32f103rc 驱动oled中文显示,编码明明选择的时gb2312,主程序内调用显示中文字符OLED_ShowChineseString(0, 0,"电流 00.0V",16, 1);
中文字符串编译结果却是 UTF-8编码,而字库内中文字库索引表Chinese_SY内中文确实gb2312编码,试了很多方法不行。
也就是同样设置 字库编译结果是gb2312码, 主程序编译结果是UTF-8.
字库子程序从其他项目拷贝来的,同一个电脑在51平台运行正常。
  中文字符“电压”在字库子程序Chinese_SY编译后为B5 E7 ,D1 B9  是gb2312,而主程序"电流 00.0V"编译后代码为 E7 94 B5,E6 B5 81是UTF-8编码,后面
00.0V 编译结果 20 30 30 2E 30 正确。
  试过更换编码格式 编译后再改回来,从其他文件拷贝粘贴字符,都不行。
又测试一下 中文显示 放在OLED.c           void disp_dy(void){
                                               OLED_ShowChineseString(0, 0,"电流 00.0V",16, 1);
                                            }

主程序调用disp_dy(); 编译结果正常显示正常
把子程序OLED.c   拷贝到其他项目,又不行编译结果又是UTF——8格式,怎么改工程某个文件编码格式.。keil 5.14版本 MDK-arm 5.34
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:309610 发表于 2025-1-12 16:08 | 只看该作者
自己顶一下吧
    又折腾几个小时反复测试,使用江科大的工程模板做的工程都存在编码错误,设置里面修改编码格式程序内中文不会随着改变,始终显示中文。
   又换了野火工程模板 随着设置编码格式修改,代码中的中文也随之改变正常或乱码,使用ANSCI或GB2312都可以,推荐ANSCI。
  以前一直用江科大的模板,习惯了比较方便,现在都要换模板,请教高手谁说一下不能切换编码格式是怎么回事是模板缺少某些文件吗,怎么修复。  
回复

使用道具 举报

板凳
ID:161164 发表于 2025-1-13 15:27 | 只看该作者
用notepad++打开
可以转换编码

回复

使用道具 举报

地板
ID:309610 发表于 2025-1-18 00:26 | 只看该作者
   用notepad++试了不行,最后又换了一个模板,重建了工程,开始还行添加显示驱动子程序后就中文不能转码了,也就是keil内修改编码,程序内中文显示无变化,选的GB2312编译后还是UTF8
    把子程序文件删除,重新创建新的子程序,打开旧工程,拷贝代码到新子程序文件。旧代码能正常显示的中文到新工程就全是乱码,怎么转换都是乱码,但是重新输入中文就正常了,能正常切换编码格式。重新修改代码内中文字符就可以正常编译了,编译后运行正常,。但是拷贝过来的代码中文注释就全是乱码,改不过来。
   总结是子程序代码移植中,反复移植编译,keil默认编译使用UTF8编码,发生了Bug。莫个子程序编码错误,移植后虽然显示正常,但其实用的是UTF8编码,移植后与整体工程不符,造成工程其他代码是GB2312,而OLED驱动是UTF8。就需要出错的子文件删除重建了。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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