개발ETC

Visual Studio Code의 터미널에서 한글이 깨지는 경우 해결 방법.

벨포트조던 2023. 4. 5.
반응형

 

최근에 키움 open api를 이용한 주식 프로그램 개발 공부를 하고 있습니다. 그런데, 키움 서버에 보내는 정보나 받아 오는 정보가 한글인 부분도 있고, 다른 사용자에게 배포도 하고 싶기 때문에 부득이하게 한글을 사용해야겠다고 생각했습니다.

 

아시는 분은 아시겠지만, vs code에서 파이썬으로 개발할 때, 한글이 참... 골치가 아픈 부분이 많습니다.

 

제가 겪은 오류가 한 두가지가 아니기때문에 웬만한 분들은 제 포스팅을 통해 해결할 수 있지 않을까 싶습니다.

 

 

먼저, 제 초기 vs code 인코딩 옵션은 UTF-8 이었습니다. 이것은 아래 사진에 나와있듯이, 우측 하단에서 확인할 수 있습니다.

 

 

 

 

형광색으로 칠한 부분이 vs code 자체 인코딩 옵션입니다.

 

이때, 아무렇게나 한글 문장을 하나 출력해 보겠습니다. 적당히, print("안녕")이라고 출력문을 적어보았습니다.

 

 

 

 

그러면, 이렇게 한글이 깨집니다.

 

제가 이 오류를 해결하기 위해서 구글링을 해 보니까, 기본 인코딩 옵션을 UTF-8이 아니라, EUC-KR로 변경하라는 정보를 얻을 수 있었습니다.

 

그래서 기본 인코딩을 EUC-KR로 변경하고, "안녕"을 다시 출력해 보았습니다.

 

 

 

 

그랬더니, 한글은 커녕 Non-UTF-8 code라는 에러 메시지가 발생하였습니다.

 

이 에러 문구를 그대로 복사해 보니까 코드 최상단에 "#-*- coding: utf-8 -*-" 코드를 삽입하라는 정보를 얻을 수 있었습니다. 코드를 입력하실 때는 따옴표는 빼고 입력하시길 바랍니다.

 

참고로, "#-*- coding: utf-8 -*-"는 다음 코드의 인코딩 형식이 utf-8로 되었다고 명시해 주는 코드입니다.

 

 

  #-*- coding: utf-8 -*-
  print("안녕")
view rawencoding.py hosted with ❤ by GitHub

 

 

이런 식으로 쓰는 것이죠. 이렇게 해서 실행을 시켰더니 아래와 같은 오류 문구가 떴습니다.

 

 

 

 

하.. 이건 또 뭐지? 싶어서 이것을 그대로 복사해서 구글링했습니다.

 

인코딩의 개념을 상세하게 풀어서 쓰신 분도 있었고, 비슷한 오류 해결 방법을 알려준 블로그도 있었지만, 진짜 웬간한 것을 다 시도해도 실패했습니다.

 

그냥 포기하려던 와중에 저를 구원해 준 다섯 줄의 코드를 발견했습니다.

 

 

  # -*- coding: euc-kr -*-
  import sys
  import io
   
  sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
  sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
   
  print("안녕")
view rawencoding2.py hosted with ❤ by GitHub

 

 

vs code 기본 인코딩 옵션을 euc-kr로 설정하고, 위와 같이 작성한 코드를 실행하면 아래와 같이 출력됩니다.

 

 

 

 

하.. 행복합니다. 한글 출력이 이렇게나 어려운 거군요.

 

근데 이마저도 문제가 하나 있습니다. 바로, 출력할 때마다 위 sys가 들어간 코드 2줄을 매 번 입력해 주어야 하는 것이죠.

 

안 그러면, 실시간을 출력되지 않고 프로그램이 다 끝난 다음에 한꺼번에 출력이 됩니다. 이유는 모르겠으나, 테스트해 보니까 그랬습니다.

 

물론, 따로 myPrint라는 함수를 따로 정의할 수도 있겠지만, 어쨌든 코드가 길어지는 문제를 해결하는 최고의 방법을 찾았습니다.

 

 

바로, 환경변수에 인코딩을 추가하는 것입니다.

 

 

 

 

위 사진과 같이 환경변수 탭에 들어간 뒤, 새로 만들기 버튼을 누른 다음 변수 이름과 변수 값을 기입하시면 됩니다.

 

이렇게 세팅을 한 다음, 다시 vs code로 가서 "안녕"이라고 출력해 보겠습니다.

 

 

 

 

잘 되는 군요!! 아 그리고 환경 변수 설정해서 한글을 출력하실 때는 vs code 기본 인코딩 옵션을 utf-8로 지정하셔야 합니다.

 

 

지금까지 vs code로 파이썬에서 한글을 출력하는 방법에 대해서 알아 보았습니다.

 

 

https://steady-coding.tistory.com/262


위 방법이 가장 정확한 흐름으로 진행되었음

 

문제는 100% 적용되는게 아니라고 판단했었다.

난 환경변수로 적용했다. 

본문 방법을 실행했을때,

 위 실행 옵션처럼, 

run code 에서는 한글 적용이 안되었고,

python 파일 실행에서는 한글이 보였따. 뭐 어차피 파일단위로 실행할거니까 거기서 만족하고 쓸려고 했었다.

한글이 나오긴 나오니까 ..

 

이틀 지나고 난 뒤에 실행해보니 둘 다 한글이 나오네 ;; ?? 이유는 모르겠지만... 위 해결 방법을 썼다.

반응형

댓글