Python 한글을 Unicode encoding HTML에 출력하기

By | 2009/07/04

  Python 한글을 Unicode로 coding된 HTML에 제대로 출력하는 방법 중 하나를 소개합니다. 얼떨결에 찾은 것이고 이를 제대로 설명하기 힘들어 바로 방법을 얘기합니다.

 

  문제

data   : ‘<p>\xea\xb3\xb5\xec\x8b\x9d\xec\x97\x90 \xeb\x94\xb0\xeb\x9d\xbc \xed\x95\xa8\xec\x88\x98\xeb\xa5\xbc \xec\xa0\x95\xec\x9d\x98\xed\x95\x98\xec\x98\x80\xec\x8a\xb5\xeb\x8b\x88\xeb\x8b\xa4.</p>’

  html에서 자바스크립트 부분에 이처럼 한글이 유니코드 숫자로 나옵니다. 그렇기에 이를 출력하면 한글이 깨져서 나옵니다.

 

  이유

self.__text

  위에서 처럼 self.__text라는 Unicode로 encoding된 변수를 그대로 HTML에 넣었기 때문입니다.

 

  해결법

((self.__text).decode(‘utf-8’)).encode(‘ascii’, ‘xmlcharrefreplace’)

  조금 복잡하지만 괜한 오해(?)가 생기지 않게 하고자 순서를 괄호로 묶어 확실하게 표현하였습니다. self._text 변수를 utf-8으로 decode한 후 이를 다시 ascii로 encoding합니다. 이 때 두 번째 인자로 xmlcharrefreplace라는 것을 줍니다. 이것이 무엇인지 아직 파악이 제대로 되지 않았으나 아마 xml에 맞는 것으로 대체한다는 뜻이 아닌가 싶습니다.

  결과

data   : ‘<p>&#44277;&#49885;&#50640; &#46384;&#46972; &#54632;&#49688;&#47484; &#51221;&#51032;&#54616;&#50688;&#49845;&#45768;&#45796;.</p>’

  이처럼 변환되어 html에 표시되고 있습니다. 그리고 한글이 제대로 출력되는 것을 역시 확인하였습니다.

 

  참조

 

  관련 그림

c6

c7

01

02

03

04

Leave a Reply