그동안 파이썬의 euc-kr 코덱에서는 KS X 1001 완성형에 들어있지
않은 글자는 그냥 에러로 처리해 왔습니다. GNU libiconv나 GNU libc를 포함한
대부분의 오픈소스 프로그램들도 그냥 완성형만 지원해 왔었는데요.
얼마전에 MSIE에서 어떤 상황에서 EUC-KR에서도 첫가끝 코드를 활용하는 사례가 보고되었고, 모질라에서도 2001년부터 이미 첫가끝을 지원하고 있었습니다.
그래서, 파이썬에서도 뭔가 그래도 부록이지만 표준 문서에 있긴 있는 내용이니 지원해야겠다 마음이 들어서, EUC-KR 코덱에 새로 구현하여 넣었습니다. 코덱 이름은 바뀌지 않고 그대로 euc_kr 이기 때문에 사용상 별로 다른 점은 없고, 완성형만 걸러내기 위한 목적으로 쓰셨던 분들은 이제부터 다른 방법을 쓰셔야 됩니다.
예를 들면 이렇게 나옵니다.
1 2 3 4 |
>>> u'비행기 쓔쓩~'.encode('euc-kr') '\xba\xf1\xc7\xe0\xb1\xe2 \xa4\xd4\xa4\xb6\xa4\xd0\xa4\xd4\xbe\xb1~' >>> print('\xa4\xd4\xa4\xb2\xa4\xce\xa4\xaa'.decode('euc-kr')) 뷁 |
적용되는 버전은 호환성 유지를 위해 2.6 이상으로 적용됐기 때문에 앞으로 나올 2.5.2나 2.5.3 버전에는 옛날 동작 그대로 완성형 한글만 변환됩니다.
마지막으로 파이썬의 숨겨진 비밀 하나 공개해 볼까요. 🙂
파이썬 2.4 이상에는 인천여중 학생의 유명한 시(?)가 하나 숨어있습니다. -ㅇ-;; 이렇게 해 보세요.
1 2 |
>>> from test.cjkencodings_test import teststring >>> print(teststring['cp949'][1]) |
처음에는 인코딩이 깨져서 나오는줄 알았습니다. 알아 보기 힘드네요. ^^;;
http://idoo.net/?menu=broke&sub=broke&mode=read&no=10353&pno=20
여기 해석본도 있네요. 어렵다. 어려워.
저도 인코딩이 깨진줄 알고 별짓을 해보다가 그래도 중간에 한글이 보여서…
그럼에도 불구하고… 대충도 무슨 뜻인지를 .. 모르겠네요..
이런것도 이스트-에그라고 볼 수 있겠죠? ㅎㅎ