STM32CubeMX、MDK(Keil MDK)、git、vscode等工具中统一编码设置(UTF-8),确保中文支持,避免乱码问题

STM32CubeMX、MDK(Keil MDK)、git、vscode等工具中统一编码设置(UTF-8),确保中文支持,避免乱码问题


STM32CubeMX、MDK(Keil MDK)、git、vscode等工具中统一编码设置(UTF-8),确保中文支持,避免乱码问题

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

为了在STM32开发环境中统一编码并支持中文,需要分别配置STM32CubeMX、Keil MDK、Source Insight和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)(纯中文环境)
  1. 勾选 Use Unicode Byte Order Mark(自动添加BOM头)。
  2. 字体设置(确保中文显示正常)
  • 点击 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,保存并重启终端。
  1. 解决 git log乱码:
exportLESSCHARSET=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,stm32的printf中文输出到串口调试软件,中文显示乱码

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

sscom5.13.1.exe 不支持编码设置,默认系统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。

但是在SSCOM5.13.1中,不支持编码选择“UTF-8”。

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

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

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

Read more

根据设计图生成前端代码,零基础入门到精通,收藏这篇就够了

根据设计图生成前端代码,零基础入门到精通,收藏这篇就够了

在现代前端开发中,从设计稿到可用页面的交付往往需要大量重复劳动:切图、手写样式、布局调整……而借助 MCP Server - Figma AI Bridge,我们可以将 Figma 设计稿自动转换成整洁的 HTML/CSS/JS 代码,并立即生成可预览的网页。一键化、傻瓜式操作,让设计交付效率跃升。 本文测试使用的系统环境如下: * Trae IDE 版本:2.4.5 * macOS 版本:14.7 * Node.js 版本:24.6.0 * npx 版本:11.5.2 * Python 版本:3.13.3

By Ne0inhk

前端大数据渲染性能优化:Web Worker + 分片处理 + 渐进式渲染

当你的页面需要解析和渲染大量数据时,用户可能会面对长时间的白屏等待。本文将介绍一种"Web Worker 分片处理 + 主线程渐进式渲染"的优化方案,让用户在数据加载过程中就能看到内容逐步呈现。 目录 1. 问题场景 2. 为什么传统方案不够好 3. 解决方案概述 4. 技术原理详解 5. 完整代码实现 6. 性能对比 7. 适用场景 8. 总结 问题场景 最近在做一个历史聊天记录恢复的功能,后端返回大量数据需要前端进行解析拼接在渲染到页面上,如果数据量大,聊天记录可能得十几秒才会显示,用户体验极差。我们需要解决的问题有两个,数据解析和DOM渲染 为什么传统方案不够好 方案一:直接同步处理 // ❌ 问题:阻塞主线程,页面完全卡死const transactions = rawData.map(item =>parseTransaction(item))setTransactions(

By Ne0inhk
基于YOLO26/11/v8算法的Web目标检测系统,人脸表情识别系统,Django+Vue3 的前后端分离,实现摄像头实时识别,YOLO26/YOLO11/v8 + LLM大模型智能分析,科研必备

基于YOLO26/11/v8算法的Web目标检测系统,人脸表情识别系统,Django+Vue3 的前后端分离,实现摄像头实时识别,YOLO26/YOLO11/v8 + LLM大模型智能分析,科研必备

✨ 更新日志 * ✔️ 2026/3/3,2.0 版本,前端导航栏改为侧边栏系统,视频流采用websocket框架延迟更低, YOLO26/YOLO11/YOLOv8 视频流更稳定,在之前的系统增加 LLM 大模型智能分析,是科研必备,支持 YOLO26/11/v8 分类模型、目标检测、分割、obb、关键点检测任务,还支持双模型联合检测与识别,如人脸表情识别、人脸识别等一些识别任务需要检测模型与分类模型共同完成,在人脸表情识别中,单独使用检测模型去识别人脸表情也不是不可以,但有一个问题数据集如果全是头部照片的话,当模型预测的照片是全身照片时,模型识别准确率就没有这么高了, 那么这时候可以用检测模型识别人脸,把人脸信息输入到表情分类模型进行分类即可,反正这是一个通用的系统,更换自己模型即可,大家懂得都懂的,更多功能看下文即可。 摘要 在人工智能迈向通用化(AGI)的今天,“视觉感知 + 语言理解”的多模态联合是未来的趋势。单纯的检测画框已经无法满足复杂的业务需求,如何让系统“看懂”

By Ne0inhk
快学快用系列:一文学会java后端WebApi开发

快学快用系列:一文学会java后端WebApi开发

文章目录 * 第一部分:Web API开发基础概念 * 1.1 什么是Web API * 1.2 RESTful API设计原则 * 第二部分:开发环境搭建 * 2.1 环境要求 * 2.2 创建Spring Boot项目 * 2.3 配置文件 * 第三部分:项目架构设计 * 3.1 分层架构 * 3.2 包结构设计 * 第四部分:数据模型设计 * 4.1 实体类设计 * 4.2 DTO设计 * 第五部分:数据访问层实现 * 5.1 Repository接口 * 5.2 自定义Repository实现 * 第六部分:业务逻辑层实现

By Ne0inhk