1

I would like (for pedagogic purpose) to display the tables of some national charsets, e.g. ISO 8859-9 (latin-9), ISO 8859-5 (Cyrillic), ISO 8859-6 (Arabic), CP1252, MacRoman, etc.

For example :

    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:  ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ 

How can I do that with Python 3? My computer is an up to date Linux machine, and uses UTF-8.

Zero Piraeus
  • 56,143
  • 27
  • 150
  • 160
Jacquelin Ch
  • 166
  • 5

1 Answers1

0

This is straightforward:

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()

Example:

>>> 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:  ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ 
Zero Piraeus
  • 56,143
  • 27
  • 150
  • 160