Windows中文乱码主因是文件编码不统一,可通过Notepad++批量转码、VS Code扩展处理、PowerShell脚本转换、CMD批处理临时适配及修改注册表强制记事本默认UTF-8五种方法解决。

如果您在Windows系统中打开多个文本文件时频繁遭遇中文乱码,很可能是由于文件编码不统一导致系统无法正确解析字节序列。以下是解决此问题的步骤:
一、使用Notepad++批量转码
Notepad++具备内置的编码识别与批量转换能力,能自动检测GBK、UTF-8(含BOM/无BOM)、ISO-8859-1等多种编码,并支持目录级操作,无需编写脚本即可完成批量处理。
1、下载并安装最新版Notepad++(确保版本≥8.6)。
2、启动Notepad++,点击菜单栏“插件”→“插件管理”,搜索并安装“Converter”插件。
3、点击“文件”→“打开文件夹”,选择包含待转换文件的根目录。
4、在资源管理器面板中按住Ctrl键多选目标文件,或按Ctrl+A全选。
5、右键任意选中文件,选择“以UTF-8编码打开”或“以GBK编码打开”,观察内容是否正常显示。
6、确认原始编码后,再次右键选中文件,选择“编码”→“转为UTF-8”或“转为ANSI(GBK)”。
7、点击“文件”→“全部保存”,所有文件将以新编码格式覆盖写入,原始文件不会被修改(除非勾选了“覆盖原文件”选项)。
二、利用VS Code配合扩展批量处理
Visual Studio Code通过扩展可实现自动化编码转换,支持保留原始文件备份、递归扫描子目录,并兼容UTF-8、UTF-16、GBK等主流编码,适合开发环境下的标准化治理。
1、在VS Code中打开目标文件夹(文件→打开文件夹)。
2、打开扩展市场(Ctrl+Shift+X),搜索并安装“Change All End Of Line Sequence and Encoding”扩展。
3、在左侧资源管理器中,按住Ctrl键多选需转换的文件,或点击文件夹名以选中整个目录。
4、右键点击任意选中项,在上下文菜单中选择“Change All Encoding”。
5、在弹出窗口中选择目标编码,如UTF-8或GBK,确认执行。
6、转换完成后,扩展默认会在原文件名后添加“.backup”后缀保存副本,确保原始数据安全。
三、通过PowerShell脚本批量转换
PowerShell提供原生命令支持编码读写,可精确控制输入输出编码格式,适用于服务器环境或CI/CD流程集成,且不依赖第三方GUI工具。
1、以管理员身份运行PowerShell。
2、执行命令设置执行策略:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser。
通过 handsfree-windows CLI控制 Windows 本机应用 (UIA) 和浏览器 (Playwright) 的引导技能,用于自动化或测试桌面应用。
3、进入目标目录:cd D:\source\texts。
4、运行批量转换命令,将所有.txt文件从GBK转为UTF-8:Get-ChildItem *.txt | ForEach-Object { Get-Content $_.FullName -Encoding Default | Set-Content "$($_.FullName).utf8" -Encoding UTF8 }。
5、若需覆盖原文件并删除旧版,追加命令:Get-ChildItem *.txt | ForEach-Object { Get-Content $_.FullName -Encoding Default | Set-Content $_.FullName -Encoding UTF8 }。
6、验证转换结果:用记事本打开任一文件,检查编码下拉菜单是否显示UTF-8且中文正常渲染。
四、使用chcp命令配合CMD批处理临时适配
对于仅需执行一次的批处理脚本或日志文件查看场景,通过切换控制台代码页可避免因CMD默认使用GBK(代码页936)而误读UTF-8文件,属于轻量级即时修复方案。
1、新建文本文件,重命名为fix_encoding.bat。
2、用记事本打开该文件,输入以下两行:@chcp 65001 > nul与@your_script_or_command_here。
3、将实际要运行的命令(如type log.txt)替换第二行中的占位符。
4、保存文件时,在记事本“另存为”对话框中将编码设为ANSI(即GBK),确保.bat文件自身可被CMD正确加载。
5、双击运行该批处理文件,CMD窗口顶部状态栏将显示“活动代码页: 65001”,此时UTF-8内容可正常输出。
五、修改注册表强制记事本默认使用UTF-8
Windows记事本对无BOM的UTF-8文件默认采用ANSI解码,导致大量现代文本文件打开即乱码。通过注册表注入iDefaultEncoding值,可使记事本新建及打开文件时优先尝试UTF-8解析,从根本上减少手动干预频率。
1、按Win+R输入regedit,回车打开注册表编辑器。
2、定位至路径:HKEY_CURRENT_USER\Software\Microsoft\Notepad。
3、右键空白处→新建→DWORD (32位)值,命名为iDefaultEncoding。
4、双击该值,将“数值数据”设为65001,基数选“十进制”。
5、关闭注册表编辑器,通过任务管理器结束所有notepad.exe进程。
6、重新启动记事本,新建文件并输入中文,保存时编码下拉菜单默认显示UTF-8而非ANSI。










