JJC's 테크니컬 다이어리

Python 3 키움증권 Open API+ 한글 인코딩 문제 본문

Python

Python 3 키움증권 Open API+ 한글 인코딩 문제

털털한JJC 2019. 2. 1. 12:00

문제점 설명:

윈도우표시언어가 영문인 상태에서

키움증권 Open API+ (OCX)를 Python 3에서 PyQT5 를 이용하여 사용할 때 

한글이 깨지는 문제가 있을 수 있다.


아래와 같이 코드를 사용하여 텍스트에디트(QTextEdit)에 dynamicCall의 반환된 텍스트를 대입하는 경우 발생하였다. (윈10, 표시언어:영문 상태 에서 발생)


    self.text_edit.append("종목명: " + name.strip())

<문제화면1. 깨진 한글 종목명>


해결을 위하여 검색과 분석등 다양한 방법으로 원인을 분석해 보았다.


해당 증권사 api 에서 반환되는 텍스트인코딩이 UTF-8같은 유니코드가 아니라 ISO8859-1(Latin-1) 기반이라는 사실을 힘겹게 확인할 수 있었다.


이를 바탕으로 다음의 코드 수정으로 정상적으로 한글이 표시되게 할 수 있었다.

 

#self.text_edit.append("종목명: " + name.strip())

self.text_edit.append("종목명: " + name.strip().encode('ISO8859-1').decode('euc-kr'))

self.text_edit.append("거래량: " + volume.strip())


<문제화면2. 정상표시 한글 종목명>