2008-09-16 1 views
40

UCS-2 Little Endian으로 파일을 저장했습니다. 다음 코드를 실행하도록 인코딩을 변경하려고합니다.Powershell : Get-Content 파이프 라인에 대한 인코딩 설정

cat tmp.log -encoding UTF8 > new.log 

결과 파일은 여전히 ​​UCS-2 Little Endian입니다. 이것은 파이프 라인이 항상 그 형식으로되어 있기 때문입니까? 이 파일을 UTF8로 새 파일에 쉽게 연결할 수 있습니까?

답변

45

바와 같이 here을 제안 -encoding 옵션은 파일을 읽거나 작성되어야한다는 encdoing을 선택하는 것입니다 내 이해 :.

Get-Content tmp.log | Out-File -Encoding UTF8 new.log 
+0

답장을 보내 주셔서 감사합니다 ... 그것은 UTF-8로 인코딩 된 xml 파일을 읽는 중 문제를 해결하는 데 도움이되었습니다 –

+1

어떻게이 바보 같은 바이트 순서 표시를 제거 할 수 있습니까? – Qwertie

+2

참조 http://stackoverflow.com/questions/5596982/using-powershell-to-write-a-file-in-utf-8-without-the-bom –

17

나는 이런 식으로 할 것 :

get-content tmp.log -encoding Unicode | set-content new.log -encoding UTF8 

+7

"GET 도움말 세트 - 컨텐츠 "는 옵션으로 -encoding을 식별하지 않지만 실제로 작동합니다. – jedatu

+6

@jedatu :이 매개 변수는 FileSystem 공급자가 제공하기 때문입니다. – Joey

2

인코딩 된 XML 파일의 내용을로드하십시오.

(은 Get-내용 -Encoding의 UTF8의 $ 파일 이름)

+1

당신이 나를 구해 주셨습니다! 고마워. :) – ylka

+0

파일 인코딩에 대한 사전 지식이 필요하기 때문에'Get-Content'를 사용하여 XML 파일을 읽지 마십시오. 파일이 가지고있는 모든 인코딩을 올바르게 처리하기 때문에 XML 파서가 파일을 자체에서 읽도록하는 것이 훨씬 좋습니다. '$ xml = (New-Object System.Xml.XmlDocument) .Load ($ fileName)' – Tomalak

1

XML 파일을 읽는 경우가 여기에 XML 파일의 인코딩에 적응 더 나은 방법 :

$xml = New-Object -Typename XML 
$xml.load('foo.xml')