encoding - Iconv UTF-8 की बजाय UTF-8 को परिवर्तित कर रहा है, जब पावरशेल से उपयोग किया जाता है



powershell (1)

बैच का प्रयास करते समय आईएसओ -8859-1 से यूटीएफ -8 में कुछ फाइलों के एन्कोडिंग को पावरशेल्ड स्क्रिप्ट में आइकन के उपयोग में बदलने में समस्या है I

मेरे पास यह बैट फाइल है, जो ठीक काम करती है:

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 
)

मुझे सभी फाइलों को डायरेक्ट्री स्ट्रक्चर पर कनवर्ट करना होगा, इसलिए मैंने इस पटकथा को पावरशेल का इस्तेमाल करते हुए क्रमादेशित किया है:

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
  }

और इसके परिणामस्वरूप फाइलें यूटीएफ -16 में परिवर्तित की जाती हैं। मुझे इसके बारे में कोई सुराग नहीं है कि मैं क्या कर रहा हूं।

क्या कोई इसमें मेरी सहायता कर सकता है? क्या यह शक्तियों के एन्कोडिंग के साथ किसी तरह की समस्या हो सकती है?

मैं W7 और WXP और LibIconv 1.9.2 का उपयोग कर रहा हूँ


> अनिवार्य रूप से आउट-फ़ाइल 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 




utf