2007년 07월 20일
파이썬에서 지원하는 표준 인코딩 목록 추출하기
이번 주말에 장난 삼아 만들 프로그램이 있다..
파이썬에서 지원하는 인코딩 목록을 얻어올 필요가 있었는데..
여자의 마음 빼고는 모르는 게 없으신 퍼키님이 한가지 해법을 알려주셨다..
여기에서 실제 유니코드 코덱이 아닌 녀석은 차집합을 이용해서 해결하면 된다..
결과는 아래와 같다..
rot_13과 mbcs만 아니면 아래의 코드로도 가져올 수 있었을텐데 아쉽;;
단, 퍼키옹 말씀을 인용하자면,
라지만 어차피 내게 의미있는 정보가 아니므로 패쓰~
그런데 생각해보니 내가 요구하는 UI에서는 Language |ㅁ| Encoding |ㅁ| Text 라 이 코드를 쓸 수는 없을 것 같다;;(여기서 |ㅁ|는 콤보박스)
encodings모듈을 한번 읽어볼 필요가 있을 것 같다.. 별 내용이 없었다;;
파이썬에서 지원하는 인코딩 목록을 얻어올 필요가 있었는데..
여자의 마음 빼고는 모르는 게 없으신 퍼키님이 한가지 해법을 알려주셨다..
>>> from encodings import aliases
>>> set(aliases.aliases.values())
여기에서 실제 유니코드 코덱이 아닌 녀석은 차집합을 이용해서 해결하면 된다..
>>> set(aliases.aliases.values()) - set(['bz2_codec', 'rot_13', 'hex_codec', 'uu_codec', 'quopri_codec', 'base64_codec', 'mbcs', 'zlib_codec'])
결과는 아래와 같다..
set(['cp862', 'gb18030', 'ascii', 'iso2022_jp_2004', 'cp1026', 'iso8859_9', 'cp1252', 'cp1140', 'mac_latin2', 'gbk', 'euc_jp', 'shift_jis_2004', 'mac_cyrillic', 'cp932', 'iso2022_jp', 'mac_roman', 'cp424', 'utf_16', 'iso8859_4', 'iso8859_15', 'iso8859_14', 'tis_620', 'iso8859_16', 'iso8859_11', 'iso8859_10', 'ptcp154', 'euc_jisx0213', 'cp500', 'utf_16_be', 'cp1258', 'cp869', 'iso8859_3', 'mac_greek', 'cp860', 'cp855', 'cp950', 'cp863', 'cp864', 'cp865', 'cp866', 'hz', 'utf_8', 'big5hkscs', 'shift_jisx0213', 'mac_iceland', 'johab', 'utf_7', 'cp861', 'mac_turkish', 'cp1255', 'cp1254', 'cp1257', 'hp_roman8', 'cp1251', 'cp1250', 'cp1253', 'euc_jis_2004', 'cp437', 'cp949', 'iso2022_jp_ext', 'euc_kr', 'iso2022_jp_3', 'iso2022_jp_2', 'iso2022_jp_1', 'iso8859_6', 'tactis', 'latin_1', 'gb2312', 'cp1256', 'big5', 'koi8_r', 'cp850', 'shift_jis', 'cp852', 'cp037', 'iso8859_8', 'cp857', 'iso8859_13', 'iso8859_5', 'iso2022_kr', 'iso8859_7', 'cp775', 'utf_16_le', 'iso8859_2'])
>>> len(_)
84
rot_13과 mbcs만 아니면 아래의 코드로도 가져올 수 있었을텐데 아쉽;;
>>> filter(lambda x: not x.endswith('_codec'), set(aliases.aliases.values()))
단, 퍼키옹 말씀을 인용하자면,
<퍼키☆> 요렇게 하면 정상적인 방법(?)을 쓰는 코덱의 목록은 얻을 수 있어요
<퍼키☆> 코덱 룩업 훅을 쓰는 경우는 검출 불가..
라지만 어차피 내게 의미있는 정보가 아니므로 패쓰~
그런데 생각해보니 내가 요구하는 UI에서는 Language |ㅁ| Encoding |ㅁ| Text 라 이 코드를 쓸 수는 없을 것 같다;;(여기서 |ㅁ|는 콤보박스)
# by | 2007/07/20 17:45 | 개발 :: 회사 | 트랙백 | 덧글(1)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
오늘은 편히 주무세요.