当前位置: 首页 > news >正文

【字符编码】记事本测试乱码思路

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

      • 一、 为什么你的操作没有出现乱码?
      • 二、 能稳定复现乱码的测试思路
        • 方案 1:使用 **GBK 不支持的字符**(最简单)
        • 方案 2:手动破坏编码(字节层面,最直观)
        • 方案 3:跨系统/编码测试(ASCII 编码场景)
      • 三、 关键补充:记事本的编码识别逻辑

我想使用电脑的记事本测试一下不同编码的乱码显示效果,但是我新建一个txt,设置为utf-8编码,在里面写了汉字保存,然后再把这个文件设为ansi编码,可是为什么没有显示乱码,我想测试一下乱码效果,解释下原因,并提供一个测试思路

一、 为什么你的操作没有出现乱码?

核心原因是:你做的是「编码转换」,而非「编码不匹配解析」,且常用汉字在中文系统的UTF-8ANSI编码中存在兼容映射。

我们先明确两个关键概念:

  1. 编码的本质:字符(如“你”)和二进制字节的对应规则。
  2. 乱码的本质用错误的编码规则解析二进制字节→ 字节无法映射到正确字符,出现或无意义字符。

你的操作流程(UTF-8 存汉字 → 另存为 ANSI)中,记事本做了主动的字符转码,而非直接用 ANSI 解析 UTF-8 字节:

  1. 中文 Windows 系统中,ANSI编码等价于GBK(兼容 GB2312),覆盖了绝大多数常用汉字。
  2. 当你选择「另存为 → ANSI」时,记事本会将原 UTF-8 编码的汉字转换为 GBK 编码的字节,再保存。
  3. 再次打开时,用 ANSI(GBK)解析 GBK 字节,自然不会乱码。

只有当字符不在目标编码的字符集内,或直接用错误编码解析原字节时,才会触发乱码。

二、 能稳定复现乱码的测试思路

要复现乱码,核心是制造「字节内容」和「解析编码」的不匹配,绕开记事本的自动转码功能。以下提供 3 种可落地的测试方案:

方案 1:使用GBK 不支持的字符(最简单)

利用「UTF-8 支持全 Unicode 字符,而 GBK 仅支持常用汉字」的特性,选择 GBK 字符集外的字符测试。

  1. 新建记事本,输入GBK 不支持的字符,例如:
    • 生僻汉字:𠀀、𠑳(扩展区汉字,不在 GBK 字符集内)
    • 特殊符号:😀(Emoji)、𝄞(音乐符号)、ℤ(数学符号)
  2. 选择「另存为 → 编码选 UTF-8 → 保存」。
  3. 再次打开文件,选择「另存为 → 编码选 ANSI → 保存」。
  4. 重新打开这个 ANSI 编码的文件:GBK 不支持的字符会变成或方块乱码,常用汉字依然正常。
方案 2:手动破坏编码(字节层面,最直观)

用十六进制编辑器直接修改文件字节,制造编码不匹配,彻底绕开记事本的自动转码。
工具:Windows 自带的WinHex(需安装)或在线十六进制编辑器。

  1. 新建记事本,输入简单内容:测试编码乱码另存为 UTF-8(带 BOM)
    • UTF-8 带 BOM 的文件开头有 3 个字节:EF BB BF,记事本靠这个识别 UTF-8 编码。
  2. 用十六进制编辑器打开这个 txt 文件,删除开头的EF BB BF字节,保存文件。
  3. 用记事本打开修改后的文件:
    • 记事本无法识别 UTF-8 编码,会默认用 ANSI(GBK)解析 UTF-8 字节 → 直接出现乱码(例如:娴嬭瘯缂栫爜闅忔剰)。
方案 3:跨系统/编码测试(ASCII 编码场景)

ANSI 在英文系统中是ASCII 编码(仅支持 0-127 的字符),中文在 ASCII 中无对应字节,必然乱码。

  1. 在中文 Windows 中,新建记事本输入中文测试另存为 UTF-8 编码(不带 BOM,可通过 Notepad++ 设置)。
  2. 将文件拷贝到英文 Windows 系统(或在中文系统中用记事本强制选择 ASCII 编码打开)。
  3. 用记事本打开文件并选择ASCII 编码→ 所有中文都会变成乱码(ASCII 无法解析中文多字节)。

三、 关键补充:记事本的编码识别逻辑

记事本打开文件时,优先级如下:

  1. 先检测BOM:有EF BB BF→ 识别为 UTF-8;有FF FE→ 识别为 UTF-16 LE。
  2. 无 BOM → 默认用ANSI编码解析(中文系统=GBK,英文系统=ASCII)。
    这也是方案 2 中删除 BOM 就能触发乱码的核心原因。

http://www.jsqmd.com/news/246240/

相关文章:

  • 深度解析:GEA架构——生成与进化技术的融合
  • Qwen3-4B-Instruct-2507实战指南
  • PDF-Extract-Kit跨语言解析:云端支持20种语言,一键切换
  • Windows 7还能用!VxKex实现Edge浏览器及现代应用兼容方案
  • 2026 AI语音落地实战:开源ASR模型+弹性GPU部署趋势详解
  • 工地安全姿势监控:7×24小时AI巡检,成本比人工低80%
  • 通义千问2.5编程辅助:日常开发效率提升
  • SGLang在金融报告生成中的应用,效率翻倍
  • 自走清淤设备,亲测效果分享
  • Wan2.2-I2V-A14B冷启动问题:首次加载模型的耗时优化
  • 亲测煤矿专用井下清淤设备:效率提升超预期
  • NewBie-image-Exp0.1 vs Stable Diffusion Anime实战对比:生成质量与GPU利用率评测
  • 通义千问3-Embedding-4B性能优化:批量处理提速技巧
  • MinerU智能文档理解教程:合同风险点自动识别方法
  • YOLOv10官方镜像打造标准化AI视觉解决方案
  • 阿里通义Z-Image-Turbo光影控制:通过提示词实现明暗层次调节
  • 开箱即用!Fun-ASR-MLT-Nano多语言语音识别Docker镜像体验
  • YOLOv9模型导出ONNX?后续推理格式转换路径
  • 避坑指南:Qwen3-4B-Instruct-2507部署常见问题全解
  • YOLO11环境配置太难?这个镜像帮你解决
  • 会议记录神器:用Whisper镜像快速实现多语言转录
  • 5分钟部署GLM-ASR-Nano-2512,零基础搭建语音识别服务
  • GPEN图像增强缓存策略:频繁访问图片结果缓存
  • 8GB显存跑Z-Image-Turbo,真实体验分享
  • TurboDiffusion日志分析:常见错误代码排查与修复指南
  • 实时字幕生成系统:SenseVoiceSmall流式输出实战教程
  • Modbus RTU帧解析及RS485传输:系统学习
  • MinerU-1.2B教程:文档水印去除技巧详解
  • Open Interpreter金融AI:财务报表的自动化分析系统
  • Llama3与Youtu-2B对比评测:高负载对话场景实测