批处理文件 (.bat) 中正确显示 UTF-8 中文需要两个关键设置:文件保存为UTF-8编码 和 设置控制台代码页

在批处理文件 (.bat) 中正确显示 UTF-8 中文需要两个关键设置:文件保存为UTF-8编码设置控制台代码页。以下是完整解决方案:

最佳解决方案 (Windows 10/11)

@echo off
chcp 65001 > nul         :: 设置控制台为UTF-8模式
cls                      :: 清屏确保刷新显示

:: ===== 以下是中文内容 =====
echo 中文测试 - 普通中文显示
echo 高级功能 ✅ √ ↑ ↓ ← → ✘
echo 特殊符号:¥ ° ℃ α β γ
echo 表情符号:😊 👍 💻
echo 混合排版:中文English混合排版
echo.
echo 当前日期:%date%
echo 当前时间:%time%

pause

关键设置说明

  1. 批处理文件必须保存为带 BOM 的 UTF-8:

    • 在记事本中:文件 > 另存为 > 编码选择 "UTF-8 带BOM"
    • 在 VS Code 中:右下角切换为 UTF-8 with BOM
  2. 字体设置要求:

    :: 临时设置字体 (需要手动确认)
    reg add "HKCU\Console" /v "FaceName" /t REG_SZ /d "Consolas" /f > nul
    reg add "HKCU\Console" /v "FontFamily" /t REG_DWORD /d 0x36 /f > nul
    

完整优化方案

@echo off & title UTF-8中文批处理演示
chcp 65001 > nul
cls

:: 1. 检查是否支持UTF-8
ver | find "10." > nul && goto :win10_or_above
echo 注意:当前系统可能无法完美支持UTF-8显示
echo 建议升级到Windows 10/11
:win10_or_above

:: 2. 设置控制台
mode con: cols=100 lines=30

:: 3. 显示中文内容
echo/
echo  ============== UTF-8中文测试 ==============
echo  ■ 基本测试:简体中文、繁體中文、日本語
echo  ■ 符号测试:✓ ✗ ⇨ ⇦ ★ ☆ ♪ ♬
echo  ■ 混合排版:中英文混合 123 ABC @#$
echo  ■ 日期时间:%date% %time:~0,8%
echo  ■ 特殊字符:① ⓐ ⒜ Ⓐ ㊀ ㈠ ⑴

:: 4. 带样式的消息
echo/
call :ColorEcho 0E "成功消息:" 
call :ColorEcho 0A "★ 操作已完成!√"

call :ColorEcho 0E "警告消息:" 
call :ColorEcho 0E "⚠ 磁盘空间不足"

call :ColorEcho 0E "错误消息:" 
call :ColorEcho 0C "✘ 文件未找到!"

:: 5. 结束
echo/
pause
exit

:: ===== 彩色输出函数 =====
:ColorEcho
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof

进阶技巧

  1. 多行文本块:

    (
    echo 第一行中文
    echo 第二行中文
    echo 第三行中文
    ) > tmp.txt
    type tmp.txt
    del tmp.txt
    
  2. 中文路径支持:

    set "中文文件夹=中文目录"
    md "%中文文件夹%"
    echo 已创建中文目录 > "%中文文件夹%\中文文件.txt"
    
  3. 终端自动重置:

    :: 退出时恢复原始代码页
    for /f "tokens=2 delims=: " %%C in ('chcp') do set original_cp=%%C
    chcp %original_cp% > nul
    

常见问题解决

问题1:显示方块或乱码
✅ 解决方法:确保使用带BOM的UTF-8保存文件,并设置控制台字体为 ConsolasMS Gothic

问题2:某些字符无法显示
✅ 解决方法:在控制台属性中启用 使用旧版控制台(需要重启)

问题3:彩色显示失效
✅ 解决方法:在控制台属性中启用 使用旧版控制台

最终建议

  1. Windows 10/11 首选方案
  2. 对于旧系统 (Windows 7/8),使用 chcp 936 (GBK编码)
  3. 复杂显示需求建议使用 PowerShell 脚本

提示:在 Windows 11 22H2 及以上版本中,默认控制台已支持 UTF-8,只需确保文件以带BOM的UTF-8保存即可正确显示中文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值