![在 Windows 命令提示符下将文本文件转换为 UTF-8](https://linux22.com/image/1517668/%E5%9C%A8%20Windows%20%E5%91%BD%E4%BB%A4%E6%8F%90%E7%A4%BA%E7%AC%A6%E4%B8%8B%E5%B0%86%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E8%BD%AC%E6%8D%A2%E4%B8%BA%20UTF-8.png)
我需要通过 Windows 命令提示符将文本文件转换为 UTF-8 格式。这需要在另一台机器上完成,但我无权在该机器上安装软件。我需要类似以下内容的东西:
c:\notepad source-file target-file --encoding option
是否有一个 Windows 命令提示符实用程序可以执行此操作?
答案1
我需要通过 Windows 命令提示符将文本文件转换为 utf-8 格式
您可以使用 PowerShell 轻松完成此操作:
Get-Content .\test.txt | Set-Content -Encoding utf8 test-utf8.txt
此方法将转换为UTF-8-BOM
进一步阅读
答案2
从 GNUWin32 包中使用iconv
。它速度更快,特别是当您的文件约为或超过 1 Gb 时。
"C:\Program Files (x86)\GnuWin32\bin\iconv.exe" -f cp1251 -t utf-8 source.txt > result.txt
答案3
以下是将 *.text 文件转换为 *.sql 文件的步骤:
foreach ($file in get-ChildItem *.txt) {
Echo $file.name
Get-Content $file | Set-Content -Encoding utf8 ("$file.name" +".sql")
}
答案4
POWERSHELL:# 假设使用 Windows PowerShell,在 PowerShell Core 中使用 -Encoding utf8BOM。对于多个文件:
第一个解决方案:
$files = Get-ChildItem c:\Folder1\ -Filter *.txt
foreach ($file in $files) {
Get-Content $file.FullName | Set-Content "E:\Temp\Destination\$($file.Name)" -Encoding utf8BOM
}
或者,第二种解决方案(针对多个文件):
get-item C:\Folder1*.* | foreach-object {get-content -Encoding utf8BOM $_ | out-file ("C:\Folder1" + $_.Name) -encoding default}
或者,第三种解决方案:(仅适用于 2 个文件)
$a = "C:/Folder1/TEST_ro.txt"
$b = "C:/Folder1/TEST_ro-2.txt"
(Get-Content -path $a) | Set-Content -Encoding UTF8BOM -Path $b