ai-coding-mines목차GitHub

PowerShell 5.1이 UTF-8 파일을 CP949로 읽는다

Windows · PowerShell

증상

UTF-8로 저장된 파일을 Get-Content로 읽어 가공한 뒤 되쓰면 한글이 자기파괴된다. 예외는 없다.

원인

PS 5.1의 Get-Content 기본 인코딩은 시스템 ANSI 코드페이지(한국어 Windows는 949)다. UTF-8 바이트를 949로 해석해 문자열로 만든 시점에서 이미 손상됐고, 되쓸 때 그 손상이 파일에 박힌다.

해법

Out-File/Set-Content의 기본 인코딩도 신뢰하지 않는다. 다른 도구가 읽을 파일이면 항상 명시한다.

검증

쓰기 후 다시 읽어 원본 문자열과 비교한다. 눈으로 콘솔 출력만 보면 콘솔 코드페이지가 한 번 더 개입해 판정이 흐려진다.