1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
""" Python Character Mapping Codec generated from 'CP1006.TXT' with gencodec.py.
Written by Marc-Andre Lemburg (mal@lemburg.com).
(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
(c) Copyright 2000 Guido van Rossum.
"""#"
import codecs
### Codec APIs
class Codec(codecs.Codec):
def encode(self,input,errors='strict'):
return codecs.charmap_encode(input,errors,encoding_map)
def decode(self,input,errors='strict'):
return codecs.charmap_decode(input,errors,decoding_map)
class StreamWriter(Codec,codecs.StreamWriter):
pass
class StreamReader(Codec,codecs.StreamReader):
pass
### encodings module API
def getregentry():
return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
### Decoding Map
decoding_map = codecs.make_identity_dict(range(256))
decoding_map.update({
0x00a1: 0x06f0, # EXTENDED ARABIC-INDIC DIGIT ZERO
0x00a2: 0x06f1, # EXTENDED ARABIC-INDIC DIGIT ONE
0x00a3: 0x06f2, # EXTENDED ARABIC-INDIC DIGIT TWO
0x00a4: 0x06f3, # EXTENDED ARABIC-INDIC DIGIT THREE
0x00a5: 0x06f4, # EXTENDED ARABIC-INDIC DIGIT FOUR
0x00a6: 0x06f5, # EXTENDED ARABIC-INDIC DIGIT FIVE
0x00a7: 0x06f6, # EXTENDED ARABIC-INDIC DIGIT SIX
0x00a8: 0x06f7, # EXTENDED ARABIC-INDIC DIGIT SEVEN
0x00a9: 0x06f8, # EXTENDED ARABIC-INDIC DIGIT EIGHT
0x00aa: 0x06f9, # EXTENDED ARABIC-INDIC DIGIT NINE
0x00ab: 0x060c, # ARABIC COMMA
0x00ac: 0x061b, # ARABIC SEMICOLON
0x00ae: 0x061f, # ARABIC QUESTION MARK
0x00af: 0xfe81, # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
0x00b0: 0xfe8d, # ARABIC LETTER ALEF ISOLATED FORM
0x00b1: 0xfe8e, # ARABIC LETTER ALEF FINAL FORM
0x00b2: 0xfe8e, # ARABIC LETTER ALEF FINAL FORM
0x00b3: 0xfe8f, # ARABIC LETTER BEH ISOLATED FORM
0x00b4: 0xfe91, # ARABIC LETTER BEH INITIAL FORM
0x00b5: 0xfb56, # ARABIC LETTER PEH ISOLATED FORM
0x00b6: 0xfb58, # ARABIC LETTER PEH INITIAL FORM
0x00b7: 0xfe93, # ARABIC LETTER TEH MARBUTA ISOLATED FORM
0x00b8: 0xfe95, # ARABIC LETTER TEH ISOLATED FORM
0x00b9: 0xfe97, # ARABIC LETTER TEH INITIAL FORM
0x00ba: 0xfb66, # ARABIC LETTER TTEH ISOLATED FORM
0x00bb: 0xfb68, # ARABIC LETTER TTEH INITIAL FORM
0x00bc: 0xfe99, # ARABIC LETTER THEH ISOLATED FORM
0x00bd: 0xfe9b, # ARABIC LETTER THEH INITIAL FORM
0x00be: 0xfe9d, # ARABIC LETTER JEEM ISOLATED FORM
0x00bf: 0xfe9f, # ARABIC LETTER JEEM INITIAL FORM
0x00c0: 0xfb7a, # ARABIC LETTER TCHEH ISOLATED FORM
0x00c1: 0xfb7c, # ARABIC LETTER TCHEH INITIAL FORM
0x00c2: 0xfea1, # ARABIC LETTER HAH ISOLATED FORM
0x00c3: 0xfea3, # ARABIC LETTER HAH INITIAL FORM
0x00c4: 0xfea5, # ARABIC LETTER KHAH ISOLATED FORM
0x00c5: 0xfea7, # ARABIC LETTER KHAH INITIAL FORM
0x00c6: 0xfea9, # ARABIC LETTER DAL ISOLATED FORM
0x00c7: 0xfb84, # ARABIC LETTER DAHAL ISOLATED FORMN
0x00c8: 0xfeab, # ARABIC LETTER THAL ISOLATED FORM
0x00c9: 0xfead, # ARABIC LETTER REH ISOLATED FORM
0x00ca: 0xfb8c, # ARABIC LETTER RREH ISOLATED FORM
0x00cb: 0xfeaf, # ARABIC LETTER ZAIN ISOLATED FORM
0x00cc: 0xfb8a, # ARABIC LETTER JEH ISOLATED FORM
0x00cd: 0xfeb1, # ARABIC LETTER SEEN ISOLATED FORM
0x00ce: 0xfeb3, # ARABIC LETTER SEEN INITIAL FORM
0x00cf: 0xfeb5, # ARABIC LETTER SHEEN ISOLATED FORM
0x00d0: 0xfeb7, # ARABIC LETTER SHEEN INITIAL FORM
0x00d1: 0xfeb9, # ARABIC LETTER SAD ISOLATED FORM
0x00d2: 0xfebb, # ARABIC LETTER SAD INITIAL FORM
0x00d3: 0xfebd, # ARABIC LETTER DAD ISOLATED FORM
0x00d4: 0xfebf, # ARABIC LETTER DAD INITIAL FORM
0x00d5: 0xfec1, # ARABIC LETTER TAH ISOLATED FORM
0x00d6: 0xfec5, # ARABIC LETTER ZAH ISOLATED FORM
0x00d7: 0xfec9, # ARABIC LETTER AIN ISOLATED FORM
0x00d8: 0xfeca, # ARABIC LETTER AIN FINAL FORM
0x00d9: 0xfecb, # ARABIC LETTER AIN INITIAL FORM
0x00da: 0xfecc, # ARABIC LETTER AIN MEDIAL FORM
0x00db: 0xfecd, # ARABIC LETTER GHAIN ISOLATED FORM
0x00dc: 0xfece, # ARABIC LETTER GHAIN FINAL FORM
0x00dd: 0xfecf, # ARABIC LETTER GHAIN INITIAL FORM
0x00de: 0xfed0, # ARABIC LETTER GHAIN MEDIAL FORM
0x00df: 0xfed1, # ARABIC LETTER FEH ISOLATED FORM
0x00e0: 0xfed3, # ARABIC LETTER FEH INITIAL FORM
0x00e1: 0xfed5, # ARABIC LETTER QAF ISOLATED FORM
0x00e2: 0xfed7, # ARABIC LETTER QAF INITIAL FORM
0x00e3: 0xfed9, # ARABIC LETTER KAF ISOLATED FORM
0x00e4: 0xfedb, # ARABIC LETTER KAF INITIAL FORM
0x00e5: 0xfb92, # ARABIC LETTER GAF ISOLATED FORM
0x00e6: 0xfb94, # ARABIC LETTER GAF INITIAL FORM
0x00e7: 0xfedd, # ARABIC LETTER LAM ISOLATED FORM
0x00e8: 0xfedf, # ARABIC LETTER LAM INITIAL FORM
0x00e9: 0xfee0, # ARABIC LETTER LAM MEDIAL FORM
0x00ea: 0xfee1, # ARABIC LETTER MEEM ISOLATED FORM
0x00eb: 0xfee3, # ARABIC LETTER MEEM INITIAL FORM
0x00ec: 0xfb9e, # ARABIC LETTER NOON GHUNNA ISOLATED FORM
0x00ed: 0xfee5, # ARABIC LETTER NOON ISOLATED FORM
0x00ee: 0xfee7, # ARABIC LETTER NOON INITIAL FORM
0x00ef: 0xfe85, # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
0x00f0: 0xfeed, # ARABIC LETTER WAW ISOLATED FORM
0x00f1: 0xfba6, # ARABIC LETTER HEH GOAL ISOLATED FORM
0x00f2: 0xfba8, # ARABIC LETTER HEH GOAL INITIAL FORM
0x00f3: 0xfba9, # ARABIC LETTER HEH GOAL MEDIAL FORM
0x00f4: 0xfbaa, # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
0x00f5: 0xfe80, # ARABIC LETTER HAMZA ISOLATED FORM
0x00f6: 0xfe89, # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
0x00f7: 0xfe8a, # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
0x00f8: 0xfe8b, # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
0x00f9: 0xfef1, # ARABIC LETTER YEH ISOLATED FORM
0x00fa: 0xfef2, # ARABIC LETTER YEH FINAL FORM
0x00fb: 0xfef3, # ARABIC LETTER YEH INITIAL FORM
0x00fc: 0xfbb0, # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
0x00fd: 0xfbae, # ARABIC LETTER YEH BARREE ISOLATED FORM
0x00fe: 0xfe7c, # ARABIC SHADDA ISOLATED FORM
0x00ff: 0xfe7d, # ARABIC SHADDA MEDIAL FORM
})
### Encoding Map
encoding_map = {}
for k,v in decoding_map.items():
encoding_map[v] = k
|