|
|
发表于 2025-6-10 16:19:11
|
显示全部楼层
本帖最后由 aloha20200628 于 2025-6-10 16:39 编辑
有限应用条件下也可直接采用纯批方法转换文本文件编码,如 gb2312 ⇄ utf-8
有限应用条件是指》源文件文本行长度不超过 8kb 字符量(汉字算2个字符),源文件非空行数不超过8000行(虽可用分割法救治但以下简版代码略之),文本行不包含 ^<%> 特殊字符以免导致输出有误,源文件有空行会被自动删除(虽可用 findstr 避免但以下简版代码略之)
代码中假设变量名 %gbF% 对应 gb2312 编码文件,%u8F% 对应 utf-8 编码文件
gb2312 编码文件转为 utf-8 编码文件
- @echo off &setlocal &set "gbF=gb.txt" &set "u8F=u8.txt"
- chcp 936>nul
- for /f "delims=" %%a in (%gbF%) do set/a "n+=1" &call set "_#%%n%%=%%a"
- chcp 65001>nul
- (for /f "tokens=* delims=_#0123456789=" %%v in ('set _#') do echo,%%v)>"%u8F%" <nul
- pause &exit/b
复制代码 utf-8 编码文件转为 gb2312 编码文件
- @echo off &setlocal &set "gbF=gb.txt" &set "u8F=u8.txt"
- chcp 65001>nul
- for /f "delims=" %%a in (%u8F%) do set/a "n+=1" &call set "_#%%n%%=%%a"
- chcp 936>nul
- (for /f "tokens=* delims=_#0123456789=" %%v in ('set _#') do echo,%%v)>"%gbF%" <nul
- pause &exit/b
复制代码 备注》借此也给另帖6楼(http://www.bathome.net/thread-70452-1-1.html)作一个补遗...
|
|