前言
在嵌入式开发中,STM32CubeMX 作为一款强大的代码生成工具,极大地简化了 STM32 项目的初始化配置过程。然而,由于 Windows 系统的默认编码为 GBK,STM32CubeMX 生成的代码文件也默认采用了 GBK 编码格式。与此同时,随着 UTF-8 编码的普及,许多开发者更倾向于使用 UTF-8 格式来编写和保存代码文件,以避免跨平台或跨工具的编码兼容性问题。在使用 Keil MDK 进行开发时,如果将代码文件的编码格式修改为 UTF-8,可能会导致 CubeMX 重新生成代码时,原有的中文注释出现乱码问题,本文将提供的解决方案,帮助开发者在享受 UTF-8 编码优势的同时,避免 CubeMX 重新生成代码时的中文乱码问题。
一.CubeMX重新生成乱码问题
由于 Windows 系统的默认编码为 GBK,“STM32CubeMX ”在生成代码时也默认使用了 GBK 编码。尽管 Keil5已修改为 UTF-8 格式,在代码中中文注释能正常显示。但是,当使用" CubeMX "重新生成代码时,但代码中的中文注释仍保留了 GBK 编码,会导致中文注释的最后一个字符出现乱码问题。
显示效果如下:
二.解决方法
1.进入编辑系统环境变量
在电脑搜索“环境变量”,点击【编辑系统环境变量】进去,在系统属性弹窗,选择 【高级】- 【环境变量】
2.添加系统环境变量
在系统变量中新建环境变量,在弹出窗口中输入以下内容:
变量名(N):JAVA_TOOL_OPTIONS
变量值(V):-Dfile.encoding=UTF-8
最后点击确定,在系统变量中能看到刚才添加的环境变量。
三.添加环境变量显示效果
在添加环境变量后,对于此前未添加环境变量时因编码问题导致乱码的工程,重新生成代码后,中文显示仍未恢复正常。这表明,若未提前配置环境变量,生成代码中的中文注释一旦出现乱码,将难以自动恢复。目前,通过手动修正中文注释并重新生成代码,中文显示已恢复正常,未再出现乱码问题。
参考文章
参考优快云这篇文章:STM32CubeMX生成代码时防止UTF-8乱码