오늘 부트캠프 개인과제를 부여받고 스켈레톤 코드를 실행하는 과정에서 일부 한글이 깨짐 식별
문제에 대해서 찾아보니 Windows 10과 readline-sync 모듈 간 인코딩의 문제인 것을 식별.
윈도우 10에서 사용하는 인코딩 방식이 한글 확장 완성형(949)라고 한다.
이걸 UTF-8 (65001)로 바꾸어주면 해결이 된다.
cmd 명령어 중 chcp, CHange Code Pages라는 것이 있는데 cmd 상의 언어를 바꾸는 명령어가 있다.
chcp 65001을 입력하고 JS 파일을 실행하니 해결이 되었지만, 껐다가 키니까 되돌아왔다.
제어판 - 시계 및 국가 - 국가 또는 지역 - 관리자 옵션 탭 - 시스템 로캘 변경 클릭 - Beta: Unicode UTF-8 사용 클릭 - 재부팅
위 과정으로 고정하는 방법이 있지만, 나 이외의 다른 사람이 이용할 때 이 과정을 거쳐야 한다는
점이 걸렸다.
그래서 생각해낸 방법이, chcp 65001 명령어를 프로그램이 실행될 때 자동으로 입력되게 만든다면? 이라는 생각이 들었고 실행해보았다.
결과는 성공이었다. 물론, 다른 환경에서는 테스트 해보지 못해서 정답이 아닐 수 있지만 지금 당장은 나혼자 쓰는 프로그램이니까...
import {execSync} from 'child_process';
function get_encoding() {
if (process.platform === "win32") {
return execSync('chcp 65001').toString();
} else {
return 0
}
}
function start(){
get_encoding();
구동되어야 할 함수들 실행
}
start()