ai-coding-mines목차GitHub

BOM 없는 .ps1의 한글 리터럴이 깨진다

Windows · PowerShell

증상

스크립트를 UTF-8(BOM 없음)로 저장했더니 powershell.exe 실행 시 소스에 박은 한글 문자열이 깨진 채 출력된다. 주석 속 한글은 무해하고, 죽는 건 출력 문자열과 한글 경로다.

원인

BOM이 없으면 PS 5.1 파서가 스크립트 소스 자체를 시스템 ANSI(949)로 읽는다. 앞 항목이 *데이터 파일 I/O* 문제라면, 이건 *스크립트 소스*가 파싱되는 단계의 문제다. 둘은 다른 층이다.

해법

BOM을 붙이면 해결되지만 "BOM 없이 저장" 규율과 충돌한다. 규율을 지켜야 하면:

```powershell

function U($b64) { [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($b64)) }

```

검증

LC_ALL=C grep -n '[^ -~]' script.ps1 — 출력이 없으면 순수 ASCII다.