Codex-CLI를 이용하면 가끔 얘가 한글로 작성된 텍스트를 제대로 읽었다 안 읽었다 오락가락하는 경우가 많고, 이 때문에 소스코드가 손상되는 경우도 있었습니다.
이는 사실 Codex-CLI 문제라기 보다는, Codex-CLI가 이용하는 터미널 (저 같은 경우 PowerShell)에서 인코딩을 cp949와 유니코드(UTF-8)을 뒤죽박죽으로 읽고 쓰기 때문에 발생한 것으로 보입니다.
다른 곳에서는 제어판의 "국가 또는 언어" 설정에서 "beta: 세계 언어 지원을 위해 UTF-8 사용"을 체크하여 해결할 수 있다고 하고, 저도 이걸로 효과는 봤지만, 일부 legacy 환경(저 같은 경우 엑셀 VBA)에서 문제가 생겨서 이 방법을 쓸 수는 없었습니다.
이에 무조건 확실하게 PowerShell이 UTF-8 Unicode로 읽고 쓰도록 고정하여 이 문제를 해결했습니다.
- 문제: 소스코드가 BOM 없는 UTF‑8인로 저장되어 있는데, PowerShell의 Get-Content가 기본 인코딩(ANSI/CP949)으로 읽어 한글이 깨짐.
- 해결: PowerShell 프로필에서 기본 인코딩을 UTF‑8로 고정해서 -Encoding utf8 없이도 올바르게 읽히게 설정.
1. 먼저 PowerShell의 기본 프로필 위치를 확인해야 합니다.
PS C:\Users\<사용자> echo $Profile
그럼 C:\Users\<사용자>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1와 같은 경로를 확인하실 수 있습니다.
(만약 없다면 New-Item -Type File -Force -Path $PROFILE로 생성합니다.)
2. 해당 파일을 텍스트 편집기로 열어 아래 내용을 넣어줍니다
# Default file cmdlet encoding to UTF-8.
$PSDefaultParameterValues['Get-Content:Encoding'] = 'utf8'
$PSDefaultParameterValues['Set-Content:Encoding'] = 'utf8'
$PSDefaultParameterValues['Add-Content:Encoding'] = 'utf8'
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
3. 기존 터미널과 VSCode를 닫고 다시 실행한 뒤, Codex-CLI가 정상적으로 한글을 읽는지 지시해봅니다.
※참고
만약 Codex-CLI가 PowerShell이 아니라 다른 터미널(CMD나 Git Bash)을 이용한다면 각각 다음과 같이 설정해줘야 합니다.
- CMD의 경우, chcp 명령어를 실행하면 949가 나오는데, 이를 65001로 바꿔줘야 합니다. 다음 레지스트리를 등록한 뒤 터미널 재실행하면 바뀌게 됩니다.
reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun /t REG_SZ /d "chcp 65001 >nul" /f
- Git Bash는 사용자의 홈 디렉토리(Posix의 ~ 경로, 윈도의 경우 대게 C:\Users\<사용자>)에 .bashrc 파일을 생성 후 아래 내용을 넣어줍니다.
export LANG=C.UTF-8
export LC_ALL=C.UTF-8
- 그 후 터미널을 재실행하고 locale을 쳤을 때 UTF-8로 나오면 정상 반영된 겁니다.