2010-01-19 3 views

답변

4

모든 유니 코드 문자는 UTF-n에 모두 정의되어 있습니다 (n). 무엇을 성취하려고합니까?

인코딩이 "싱글 바이트"또는 "멀티 바이트"인지 여부 또는 크기가 고정되어 있는지 여부를 알 필요없이 특정 인코딩에서 유효한 문자를 모두 인쇄하려는 경우 :

import unicodedata as ucd 
import sys 

def dump_encoding(enc): 
    for i in xrange(sys.maxunicode): 
     u = unichr(i) 
     try: 
      s = u.encode(enc) 
     except UnicodeEncodeError: 
      continue 
     try: 
      name = ucd.name(u) 
     except: 
      name = '?' 
     print "U+%06X %r %s" % (i, s, name) 

if __name__ == "__main__": 
    dump_encoding(sys.argv[1]) 

제안 : cp1252과 같은 작은 것으로 시도해보십시오. stdout을 파일로 재 지정하십시오.

4

친구, 당신은 파이썬 문서에서, BTW 유니 코드에 얼마나 많은 코드 포인트 어떤 생각 ...

이 있습니까 :의

unichr (I)

반환 유니 코드 문자열을 유니 코드 코드가 정수 i 인 한 문자. 예를 들어, unichr (97)은 문자열 u'a '를 반환합니다. 이것은 유니 코드 문자열의 경우 ord()의 반대입니다. 인자의 유효 범위는 파이썬이 어떻게 구성되었는지에 달려 있습니다. UCS2 [0..0xFFFF] 또는 UCS4 [0..0x10FFFF] 중 하나 일 수 있습니다. 그렇지 않으면 ValueError가 발생합니다. ASCII 및 8 비트 문자열의 경우 chr()을 참조하십시오.

버전 2.0의 새로운 기능.

그래서

import sys 
for i in xrange(sys.maxunicode + 1): 
    print unichr(i) 
+0

그 이유는 내가 손으로 그것을하고 싶지 않아 :) – Geo

+2

당신도 자동으로 그것을하고 싶지 않아, 그것은 1 백만명이 넘는, 그것을 인쇄하는 나무 걸릴 거라고 사실은 유니 코드 표준 도서;) – wich

+1

인쇄 말하기 : http://ian-albert.com/misc/unichart.php –

1

단일 바이트 인코딩을 위해 다음을 사용할 수 있습니다

''.join(chr(x) for x in range(256)).decode(encoding, 'ignore') 

는 주어진 인코딩에있는 모든 유효한 문자를 포함하는 문자열을 얻을 수 있습니다.

고정 크기 멀티 바이트 인코딩의 경우 chr() 대신에 struct.pack()을주의해서 사용해야합니다.

관련 문제