Board logo

标题: [文本处理] 批处理如何将txt文件utf-16LE编码改成UTF-8编码? [打印本页]

作者: Cypher    时间: 2024-3-6 14:44     标题: 批处理如何将txt文件utf-16LE编码改成UTF-8编码?

如何将txt文件utf-16LE编码改成UTF-8编码
作者: ShowCode    时间: 2024-3-6 15:34

回复 1# Cypher


V1.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. powershell "Get-ChildItem *.txt | ForEach-Object {$NewName = $_.Basename + 'New' + $_.Extension; Get-Content $_ | Out-File -Encoding UTF8 $NewName}"
复制代码

作者: aloha20200628    时间: 2024-3-7 18:31

本帖最后由 aloha20200628 于 2024-3-7 18:37 编辑

回复 1# Cypher

以下代码存为test.bat运行,结果生成utf-8无头标编码文件
考虑若完成批量转码,故代码采用ps读写方法中效率最高的[io.file]系列函数
第2行中目标文件(预设D:\txt\*.txt)其路径和文件类型可被修改,多个双引号包裹变量以便其中可含空格
第3行中预设输入编码 inEnc = unicode 其可覆盖 utf-16LE/utf-16BE编码(用于本帖楼主需求);
若 inEnc = default 其可覆盖简中编码(gbk/gb2312)完成简中编码文件转码为utf-8无头标编码文件
  1. @echo off &setlocal
  2. set "tFiles=D:\txt\*.txt"
  3. set "inEnc=unicode"
  4. powershell "$listF=& cmd /c dir/b/s/a-d """%tFiles%"""; foreach ($F in $listF) { $FF=$F+'.new'; $s=[io.file]::readalltext($F,[text.encoding]::%inEnc%);[io.file]::writeAlllines($FF,$s) }"
  5. endlocal&exit/b
复制代码

作者: svke    时间: 2024-4-11 15:04

回复 1# Cypher
论坛里有这个第三方工具很好用http://www.bathome.net/viewthrea ... amp;highlight=coder




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2