跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
C

STM32CubeMX、Keil MDK、Git 及 VS Code 统一 UTF-8 编码配置指南

综述由AI生成详细说明了如何在 STM32 开发流程中统一配置 STM32CubeMX、Keil MDK、Git 和 VS Code 为 UTF-8 编码,以防止中文注释乱码及串口调试软件显示异常。内容涵盖各工具的具体参数设置、系统区域调整建议以及团队代码规范配置方法。

雾岛听风发布于 2026/3/24更新于 2026/5/317 浏览

概述

核心需求:我们希望在这些工具中统一编码设置,确保中文支持,避免乱码问题。这通常涉及到设置文件编码为 UTF-8,以及配置编辑器、编译器等。

为了在 STM32 开发环境中统一编码并支持中文,需要分别配置 STM32CubeMX、Keil MDK 和 Git。以下是各工具的详细设置方法:

一、STM32CubeMX 编码设置

核心目标: 强制生成 UTF-8 编码的源代码文件,避免中文注释乱码。

配置步骤:

  1. 找到 STM32CubeMX 安装目录下的 STM32CubeMX.l4j.ini 文件(通常位于 C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeMX)。
  2. 在文件末尾的部分添加以下参数
-Dfile.encoding=UTF-8 -Duser.language=zh -Duser.region=CN 
  1. 保存文件并重启 STM32CubeMX。
  2. 验证:生成工程后,用文本编辑器(如 Notepad++)打开 main.c,确认编码为 UTF-8。

二、Keil MDK 编码设置

核心目标: 确保编辑器正确显示和保存 UTF-8 编码的中文。

配置步骤:

  1. 打开 Keil MDK,进入 Edit→ Configuration→ Editor 选项卡。
  2. 在 Encoding 下拉菜单中选择:
    • 推荐: UTF-8
    • 或 Chinese GB2312(Simplified)(纯中文环境)
  3. 勾选 Use Unicode Byte Order Mark(自动添加 BOM 头)。
  4. 字体设置(确保中文显示正常):
    • 点击 Font…按钮,选择支持中文的字体(如 Microsoft YaHei、SimSun)。
    • 字符集选择 CHINESE_CHARSET。

5. 系统区域设置(Windows,慎重处理,建议不要修改):

  • 打开'控制面板' → '区域' → '管理' → '更改系统区域设置'。
  • 选择'中文 (简体,中国)',取消勾选'Beta 版:使用 Unicode UTF-8 提供全球语言支持'。
  • 重启电脑生效。

注意: 对于已有乱码文件,可使用 File→ Open With Encoding…选择正确编码重新加载。

三、Git 编码设置

核心目标: 确保 Git 命令行和日志正确显示中文文件名和内容。

配置步骤(在 Git Bash 中执行):

  1. 设置全局编码参数:
git config --global core.quotepath false # 直接显示中文文件名
git config --global i18n.commitEncoding utf-8 # 提交信息编码
git config --global i18n.logOutputEncoding utf-8 # 日志输出编码
git config --global gui.encoding utf-8 # 图形界面编码
  1. 终端编码设置:

    • 右键 Git Bash 窗口标题栏,选择 Options→ Text。
  • 将 Character set 设置为 UTF-8,保存并重启终端。
  • 解决 git log 乱码:

  • export LESSCHARSET=utf-8 # 确保分页器支持 UTF-8
    
    1. Windows 换行符设置(推荐):
    git config --global core.autocrlf true # 提交时 CRLF 转 LF,检出时 LF 转 CRLF
    

    四、VS Code 设置 UTF-8 编码

    五、统一工作流建议

    源头控制:在 STM32CubeMX 中强制生成 UTF-8 编码的源文件。

    IDE 统一:Keil MDK 和 VS Code 均设置为 UTF-8 编码。

    版本控制:Git 配置为全程 UTF-8,避免文件名和日志乱码。

    团队协作:将上述配置写入团队文档,并使用 .gitattributes 文件统一换行符和编码:

    * text=auto *.c text charset=utf-8 *.h text charset=utf-8 
    

    按照以上步骤配置后,四个工具将统一使用 UTF-8 编码,彻底解决中文乱码问题,并确保团队协作的一致性。

    六、MDK 编码格式为 UTF-8 时的串口显示问题

    原因分析: MDK 编码为 UTF-8,所以源代码中的中文字符串是 UTF-8 编码。当程序通过 printf 输出到串口时,发送的是 UTF-8 编码的字节流。串口调试软件如果以错误的编码(比如 GB2312)显示,就会看到乱码。因此,我们需要将串口调试软件的显示编码设置为 UTF-8。

    SSCOM 不支持编码设置,默认系统 ANSI 编码 (中文编码为 GBK),所以无法修改。

    以下以常见的串口调试软件为例,说明如何设置:

    SecureCRT:

    • 打开会话选项(Session Options)。
    • 在终端(Terminal)设置中,找到外观(Appearance)下的字符编码(Character encoding)。
    • 将编码设置为'UTF-8'。

    Xshell:

    • 打开会话属性(Session Properties)。
    • 在终端(Terminal)设置中,找到编码(Encoding)。
    • 选择'UTF-8'。

    Putty:

    • 在连接设置中,找到窗口(Window)下的转换(Translation)。
    • 在'接收数据的字符集'(Received data assumed to be in which character set)中选择'UTF-8'。

    MobaXterm:

    • 打开会话设置(Session Settings)。
    • 在终端设置(Terminal settings)中,找到终端字体(Terminal font)下的编码(Encoding)。
    • 选择'UTF-8'。

    串口调试助手(如 SSCOM、AccessPort 等):

    很多国产串口调试助手默认使用 GB2312 编码。如果软件支持设置显示编码,请将其设置为 UTF-8。

    但是在 SSCOM 中,不支持编码选择'UTF-8'。

    如果串口调试软件不支持 UTF-8 编码:

    可以考虑更换支持 UTF-8 的串口调试软件。

    或者,在代码中将 UTF-8 字符串转换为 GB2312 再发送(不是我们期望的)。

    目录

    1. 概述
    2. 一、STM32CubeMX 编码设置
    3. 二、Keil MDK 编码设置
    4. 三、Git 编码设置
    5. 四、VS Code 设置 UTF-8 编码
    6. 五、统一工作流建议
    7. 六、MDK 编码格式为 UTF-8 时的串口显示问题
    8. SecureCRT:
    9. Xshell:
    10. Putty:
    11. MobaXterm:
    12. 串口调试助手(如 SSCOM、AccessPort 等):
    13. 如果串口调试软件不支持 UTF-8 编码:
    • 💰 8折买阿里云服务器限时8折了解详情
    • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
    • 代充Chatgpt Plus/pro 帐号了解详情
    • 🤖 一键搭建Deepseek满血版了解详情
    • 一键打造专属AI 智能体了解详情
    极客日志微信公众号二维码

    微信扫一扫,关注极客日志

    微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

    更多推荐文章

    查看全部
    • Wan2.2 视频生成风格单一?LoRA 微调实战提升多样性
    • Python 30 分钟构建简易记事本应用
    • macOS 外接显示器配置:分辨率、多屏与色彩校准
    • AI 技术资讯:Ouroboros 自进化代理、CoPaw 开源助手与 Claude 升级
    • IntelliJ IDEA 2026.1 EAP 发布:Java 26 与 Spring Boot 4 支持
    • 数据结构:二叉树核心概念与特性
    • Lostlife2.0下载官网整合LLama-Factory引擎,增强NPC对话逻辑
    • SmolVLA 高算力适配:TensorRT 加速可行性分析与 ONNX 导出实操
    • MySQL 数据库基础操作:创建、管理与备份恢复
    • ArcFace 人脸识别源代码与模型深入剖析
    • Agent 系统架构设计:持久化、模块化与风控实践
    • OpenClaw 架构原理与落地实战:AI Agent 执行网关底层逻辑
    • llama.cpp CUDA 编译问题排查与性能优化指南
    • 搜狗输入法 AI 汪仔进程占用 CPU 过高解决方案
    • GitHub Copilot 提示词工程指南:掌握 AI 编程协作核心技巧
    • Java Lambda 与匿名内部类为何禁止修改外部变量?final 机制详解
    • CentOS 系统下 Python 环境安装与生产部署实战
    • C++ STL map 容器详解:高效存储与快速查找
    • Codex 接入 Kimi K2 与 GLM-4.6 环境配置指南 (Windows/macOS/Ubuntu)
    • OpenClaw 飞书机器人搭建指南

    相关免费在线工具

    • Base64 字符串编码/解码

      将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

    • Base64 文件转换器

      将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

    • Markdown转HTML

      将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

    • HTML转Markdown

      将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

    • JSON 压缩

      通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

    • JSON美化和格式化

      将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online