找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 2538|回复: 14

[文本处理] 【已处理】批处理中文乱码的问题

[复制链接]
发表于 2025-10-10 18:18:38 | 显示全部楼层 |阅读模式
本帖最后由 没有名字9 于 2025-10-15 23:59 编辑

使用了chcp 65001>nul和chcp 936>nul。
刚开始接触的时候不需要这个chcp也会正常显示中文,后面第一次出现了乱码,使用chcp65001解决了问题,然后过了一些天,chcp65001也出现了乱码,问了ai,ai说可能是编码问题,推荐了gbk编码,也就是chcp936,也暂时解决了问题,但是现在又不行了。不知道又该用什么方法。已经问了ai,希望能够解决我的问题,但是希望各位大佬们能给出一些建议和经验,在此先谢过了
发表于 2025-10-10 18:42:57 | 显示全部楼层
回复 1# 没有名字9

用的是哪一版 windows ?
处理哪些文件会出现中文乱码?
发表于 2025-10-10 18:51:45 | 显示全部楼层
首先你要先确定或检测文件编码
utf-8编码的文件用chcp 60001
gbk编码的文件用chcp 936
发表于 2025-10-10 20:39:44 | 显示全部楼层
回复 1# 没有名字9


    请把你的bat文件、需要处理的txt文件等打包上传到网盘,我试试。
发表于 2025-10-10 21:48:01 | 显示全部楼层
自从由win7跳到Win11,我也一直被文本编码问题困扰。
Win11新建文本会默认utf-8,导致通常的bat处理会报错。另存为操作又烦。
因此我尝试用bat直接生成ansi格式文本。用 echo 啊>1.txt 为bat,并存为ansi格式。由此产生txt直接为ansi格式

你的问题,可以编写一个查找 汉字常用字的bat对文本格式进行判断,并来对utf-8格式txt进行批量转码ansi处理,基本就不烦了。
 楼主| 发表于 2025-10-12 19:42:43 | 显示全部楼层
回复 2# aloha20200628


    用的是win11专业工作站版,并不是处理文本时出现乱码,而是在文本文档(.txt)中写完之后(比如写“echo 你好”),然后修改为(.bat)文件后,点击运行,显示的是乱码。AI给出的解决方法是,在记事本的设计中将编码方式由UTF-8改为ASCII,这个做法目前已经解决了我的问题。
 楼主| 发表于 2025-10-12 19:48:35 | 显示全部楼层
回复 4# Batcher


    你好,我的问题并非是使用批处理处理文本或文件时发生乱码,而是在文本文档中(.txt)编写(如echo 你好),将其改为(.bat)文件运行后,出现的乱码。AI建议我使用记事本另存时,将编码方式改为ASCII,这种做法目前解决了我的问题。以下是我当时写的内容


@echo off
chcp 936>nul
setlocal enabledelayedexpansion
echo ---------------------------------------------------
echo 本脚本为重命名脚本(不支持跨路径跨目录处理)
echo ---------------------------------------------------
echo 请选择操作
echo 1.开始重命名
echo 2.退出
echo.
 楼主| 发表于 2025-10-12 19:51:57 | 显示全部楼层
回复 5# hlzj88


    你好,你的方法对于我这个初学者来说有点难懂,我想请你是否可以在详细的说一下(如果太麻烦就算了),但是你确实说的很对,在文本另存时,将编码改为ASCII就可以解决这个问题,但是一直另存时进行选择是会非常麻烦的。
 楼主| 发表于 2025-10-12 19:53:18 | 显示全部楼层
回复 3# czjt1234


    你好,请问一下,要如何确定并检测文件编码呢?是否需要写一些命令呢?求教,谢谢
发表于 2025-10-12 20:33:58 | 显示全部楼层
1 建
  1. echo 的>ansi.txt
复制代码
2 转
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b/on *.txt') do findstr /i "的 在 了 说 我 你 他 她 一 二 三 就 有 是 为 和 上 中 之 请 等 到 好 年 月 日 啊 男 女" "%%i">nul&&echo %%i ansi || @iconv -c -f utf-8 -t GBK "%%i">>"gb%%i"&&echo %%i 已转码&&move /y "gb%%i" "%%i">nul 2>nul
  3. echo,&echo 当前文件夹处理完毕   请不要用于处理内容全英文的txt文件
  4. pause
复制代码
这是两个bat,都需要另存为ansi格式。  utf格式不止UTF-8,其他类型我没遇到。同时也不会处理。所以第二代码只是一个简单的方式。

使用了第三方程序iconv.exe。在http://bcn.bathome.net/s/tool/index.html  ,由于改版了,我竟然不会下载了。
发表于 2025-10-12 21:33:27 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-10-12 21:38 编辑

回复 6# 没有名字9

以下代码存为 test.bat 运行,可将win 10+系统的记事本默认存盘编码设置为 ansi
代码第一行中变量 v 取值 1 为默认 ansi 编码,5 为默认 utf-8 编码,6 为默认 gb18030 编码(大字符集简中编码)

  1. @echo off &set "v=1"
  2. reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Notepad" /v iDefaultEncoding /t reg_dword /d %v% /f
  3. pause&exit/b
复制代码
发表于 2025-10-13 08:41:56 | 显示全部楼层
回复 11# aloha20200628


Win11 22H2 实测无效。
不同的AI给出的几个不同注册表键值也试过了,没发现有用的。
发表于 2025-10-13 15:17:49 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-10-13 15:19 编辑

回复 12# ShowCode

已经多年不再用 notepad.exe 编程了,手边亦无 win11,无法实测深究此题了。
请有兴趣者借 AI 诸家问路吧,据说自 win11 22H2+ 新版系统开始,nodepad 不再用注册表存储默认编码值,而外移到 %localAppDate% 下某个子目录中的 settngs.dat 数据文件,不过好在据说有记忆首次改变存盘编码的功能...
 楼主| 发表于 2025-10-15 23:59:38 | 显示全部楼层
回复 11# aloha20200628


    好的,我会在后续的编写中尝试
 楼主| 发表于 2025-10-16 00:00:22 | 显示全部楼层
回复 10# hlzj88


    您写的内容有点多,我会慢慢消化的,在此先谢过了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:06 , Processed in 0.019718 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表