NBSP는 스페이스인가 아닌가!
- 2004년 7월 21일 13시 19분
- 댓글 6 개
FreeBSD의 파이썬에서 UTF-8로 로캘을 설정하고 나서, str.split()을 하면 0xa0이 중간에 끼여 들어가 있으면 막 글자 중간에서 짤려서 결국은 invalid seq를 생성해내는 문제가 있습니다.
>>> import locale
>>> locale.setlocale(locale.LC_ALL, '')
'ko_KR.UTF-8'
>>> print repr('할'), '할'.split()
'\xed\x95\xa0' ['\xed\x95']리눅스에서 테스트를 해 보면 제대로 나오는게 자세히 보니까 이런 리눅스에서는 isspace(0xa0)이 0이군요.. BSD에서는 ISO8859-1과 UTF-8 로캘 모두 1이 나오고..
그런데, 또 재미있는 것은 파이썬에서는 \u00a0이 space입니다 --;
>>> u'\xa0'.isspace() True
BSD와 마찬가지로 UnicodeData.txt에서 그대로 생성했기 때문에 그런 것인데.. 과연 NBSP가 스페이스는 스페이스니까 스페이스로 인정을 할 것인지.. 브레이크 없는 스페이스니까 스페이스가 아니라고 해야할 것인지 생각을 하면 할 수록 헷갈리는데 우에에.. 분명히 파이썬과 BSD의 locale 중의 하나를 고쳐야할 터인데 뭘 고쳐야할 지 모르겠군요. --; SUS는 봐도 도움도 안되게 간략하게 나와있고..
(소식: 오늘 ftp.unicode.org 를 둘러보다보니 Unicode 4.1이 슬슬 올라오고 있네요.)
