2011-09-28 2 views
4

파일 문자 인코딩 대화를위한 PowerShell 스크립트가 있습니다.PowerShellscript, 잘못된 파일 인코딩 대화

Get-ChildItem -Path D:/test/data -Recurse -Include *.txt | 
ForEach-Object { 
    $inFileName = $_.DirectoryName + '\' + $_.name 
    $outFileName = $inFileName + "_utf_8.txt" 
    Write-Host "windows-1251 to utf-8: " $inFileName -> $outFileName 
    E:\bin\iconv\iconv.exe -f cp1251 -t utf-8 $inFileName > $outFileName 
} 

utf-8 대신 파일 문자 인코딩을 utf-16으로 변환합니다. 명령 줄에서 iconv 유틸리티를 호출하면 제대로 작동합니다.

무엇이 잘못 되었나요?

답변

6

당신은 PowerShell은 기본 인코딩으로 유니 코드를 사용하고, 출력을 파일로 리디렉션합니다. 리디렉션 연산자를 사용하는 대신 -Encoding UTF8 스위치를 사용하여 Out-File으로 연결할 수 있습니다.

E:\bin\iconv\iconv.exe -f cp1251 -t utf-8 $inFileName | Out-File -FilePath $outFileName -Encoding UTF8 

다음 TechNet 문서 (파워 쉘의 V2의 Get-Help Out-File -full 상당) 추가 정보를 갖는다. 경우

  • Out-File 그것은 당신이 또한 인코딩 변환을 할 PowerShell을 사용할 수 있음을 주목할 필요가 전혀 시나리오를하는 데 도움이됩니다.

    Get-Content $inFileName -Encoding ASCII | 
    Out-File -FilePath $outFileName -Encoding UTF8 
    
+0

Get-Content cmdlet에 대해 -Encoding 매개 변수가 있습니까? –

+0

는 Gustav.Calder @ - 그래이 Gustav.Calder @ – manojlds

+2

가 있지만,이 파일 시스템 공급자가 제공하는 동적 매개 변수이기 때문에 그것은'은 Get-content' 블록에 대한 도움말에 표시되지 않습니다. 'Get-Help FileSystem'에서 더 많은 정보를 찾을 수 있습니다. – ajk

관련 문제