Development Tools

[일렉트론 / ELECTRON] CMD 한글 깨짐 현상

밍글링글링 2023. 1. 11.
728x90

일렉트론 프로젝트를 하다 데이터를 수집해야하는 상황이 생겨서 데이터를 수집하였는데

?먯쟾?쇰턿?꾠뫢좎옣?섍뎔 ?멸뎄?뺤콉 ?꾧뎅誘??꾩씠?붿뼱 怨듬え???덈궡

 

위와 같이... 터미널에서 보여졌다..

다른 nodejs, java, spring, python 등의 프로젝트에서는 터미널에서 한글 깨지는 현상이 없었는데...

일렉트론 프로젝트를 하다가... 한글이 깨지더라..

 

이 현상을 해결하려고 

iconv-lite 라이브러리를 깔아서 euc-kr이나 utf-8로 디코더해도 돌아오지 않고..

let doc = iconv.decode(data, 'EUC-KR')

 

처음에는 한글이 CMD에서만 깨져서 보이는지 확인이 되지 않았었다.

그래서. 일렉트론앱 위에 그대로 데이터를 뽑아내니까 한글로 보이는 것으로 보아서

한글이 저장은 되는데 CMD에서 한글이 깨지는 것을 확인하였다.

 

결론은 한글이 CMD에서만 깨져서 보이지만 데이터는 한글로 저장된다는 뜻이다.

 

이에 해당하는 해결방법은...

$ chcp 65001

 

터미널에서 위와 같이 입력하면 chcp 65001로 변환이 된다.

하지만, 이 방법은 임시적이다..

 

그래서 반영구적인 방법은 레지스트리를 설정해야하는데

 

728x90

 

1. 윈도우+R 단축키 [실행] 앱 열고 "regedit" 입력

 

2. HKEY_CURRENT_USER\Console > 오른쪽 마우스 클릭 > 새로 만들기 > 키 를 클릭하여 키를 생성한다.

 

3.  이름을 '%SystemRoot%_System32_cmd.exe' 로 설정한다.

 

4. %SystemRoot%_System32_cmd.exe 에서 새로 만들기 > DWORD(32비트) 값을 선택한다.

 

5. 생성된 DWORD(32비트) 파일의 이름을 CodePage로 변경하고 더블클릭하여 값을 65001로 변경한다.

 

만약 VSCODE에서 오류가 난다고 하면.

setting.json에 아래 내용을 추가한다

"terminal.integrated.shellArgs.windows": \[
	"C:\\\\Windows\\\\Sysnative\\\\cmd.exe",
    "chcp 65001"
\],

 

위 방법으로 되지 않는다면,

컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage > OEMCP > 65001 값을 설정하고

아래와 같이 vscode에서 setting.json 파일을 다음과 같이 변경한다.

"terminal.integrated.shellArgs.windows": \[
	"/K",
    "chcp 65001"
\],

 

728x90

댓글