gpt4 book ai didi

encoding - 从 powershell 调用时,Iconv 正在转换为 UTF-16 而不是 UTF-8

转载 作者:行者123 更新时间:2023-11-30 23:59:16 24 4
gpt4 key购买 nike

我在尝试使用 powershell 脚本中的 iconv 将某些文件的编码从 ISO-8859-1 批量转换为 UTF-8 时遇到问题。

我有这个 bat 文件,可以正常工作:

for %%f in (*.txt) do (
echo %%f
C:\"Program Files"\GnuWin32\bin\iconv.exe -f iso-8859-1 -t utf-8 %%f > %%f.UTF_8_MSDOS
)

我需要转换目录结构上的所有文件,所以我编写了另一个脚本,这次使用 powershell:
Get-ChildItem -Recurse -Include *.java |
ForEach-Object {
$inFileName = $_.DirectoryName + '\' + $_.name
$outFileName = $inFileName + "_UTF_8"
Write-Host Convirtiendo $inFileName -> $outFileName
C:\"Program Files"\GnuWin32\bin\iconv.exe -f iso-8859-1 -t utf-8 $inFileName > $outFileName
}

使用它的结果是文件被转换为 UTF-16。我不知道我做错了什么。

有人可以帮我解决这个问题吗?难道是powershell本身的编码存在某种问题?

我正在使用 W7 和 WXP 以及 LibIconv 1.9.2

最佳答案

>本质上是使用默认编码为 Unicode 的 Out-File cmdlet。尝试:

iconv.exe ... | Out-File -Encoding Utf8

或使用参数:
& "C:\Program Files\GnuWin32\bin\iconv.exe" -f iso-8859-1 -t utf-8 $inFileName |
Out-File -Encoding Utf8 $outFileName

由于 iconv.exe 以 UTF8 输出,您必须告诉 .NET 控制台子系统如何像这样解释 stdin 流(在 iconv.exe 之前执行此操作):
[Console]::OutputEncoding = [Text.Encoding]::UTF8 

关于encoding - 从 powershell 调用时,Iconv 正在转换为 UTF-16 而不是 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3604753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com