如何打印国家字符集表?

时间:2018-01-23 09:25:55

标签: python python-3.x character-encoding codepages

我希望(出于教学目的)显示一些国家字符集的表格,例如ISO 8859-9(拉丁文-9), ISO 8859-5(西里尔文),ISO 8859-6(阿拉伯语),CP1252,MacRoman等。

例如:

    0 1 2 3 4 5 6 7 8 9 a b c d e f 
3:  0 1 2 3 4 5 6 7 8 9 : ; < = > ? 
4:  @ A B C D E F G H I J K L M N O 
5:  P Q R S T U V W X Y Z [ \ ] ^ _ 
6:  ` a b c d e f g h i j k l m n o 
7:  p q r s t u v w x y z { | } ~  
8:                 
9:                  
a:    ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ 
b:  ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ 
c:  À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï 
d:  Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß 
e:  à á â ã ä å æ ç è é ê ë ì í î ï 
f:  ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ 

我如何使用Python 3做到这一点? 我的电脑是最新的Linux机器,使用的是UTF-8。

1 个答案:

答案 0 :(得分:0)

这很简单:

def codepage(codec):
    print('    ' + ' '.join(format(n, 'x') for n in range(16)))
    for row in range(2, 16):
        print(format(row, 'x'), end=':  ')
        for col in range(16):
            byte = bytes([row * 16 + col])
            char = byte.decode(codec, errors='replace')
            print(char, end=' ')
        print()

示例:

>>> codepage('iso8859-1')
    0 1 2 3 4 5 6 7 8 9 a b c d e f
2:    ! " # $ % & ' ( ) * + , - . / 
3:  0 1 2 3 4 5 6 7 8 9 : ; < = > ? 
4:  @ A B C D E F G H I J K L M N O 
5:  P Q R S T U V W X Y Z [ \ ] ^ _ 
6:  ` a b c d e f g h i j k l m n o 
7:  p q r s t u v w x y z { | } ~  
8:      
                 
9:        
a:    ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ 
b:  ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ 
c:  À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï 
d:  Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß 
e:  à á â ã ä å æ ç è é ê ë ì í î ï 
f:  ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ