3
我嘗試使用powershell腳本中的iconv將ISO-8859-1中的某些文件的編碼批量轉換爲UTF-8時出現問題。當從powershell調用時,Iconv正在轉換爲UTF-16而不是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
謝謝您的迴應Keith。 我剛試過。現在輸出文件是UTF-8編碼的,但有些字符被破壞(例如,á和á)。在iconv輸出中他們沒問題(至少我看到他們在使用我的BAT版本時很好)。有關它的任何想法? – fdediego 2010-08-31 20:27:48
你需要告訴PowerShell iconv.exe正在使用什麼編碼。設置控制檯輸出編碼,以便PowerShell知道如何解釋iconv.exe輸出的字節 - [[Console] :: OutputEncoding = [Text.Encoding] :: UTF8] - 如此處所述http://keithhill.spaces.live .com/blog/cns!5A8D2641E0963A97!7212.entry – 2010-08-31 21:00:50
非常感謝Keith。它現在正在充分運作! – fdediego 2010-08-31 21:25:41