Actually, I need utf-8 to utf-8 encoding which would change the text
to another keyboard layout (e.g. from english to russian ghbdtn ->
привет) and would not affect other symbols.

I`m totally new to python and to more or less advanced programming. I
couldn`t find the answer to the question anywhere.

I`ve tried create simple utf to utf codec for some symbols but it
doesn`t work. Here it is.



import codecs

### Codec APIs

class Codec(codecs.Codec):

    def encode(self,input,errors='strict'):
        return codecs.charmap_encode(input,errors,encoding_table)

    def decode(self,input,errors='strict'):
        return codecs.charmap_decode(input,errors,decoding_table)

class IncrementalEncoder(codecs.IncrementalEncoder):
    def encode(self, input, final=False):
        return codecs.charmap_encode(input,self.errors,encoding_table)
[0]

class IncrementalDecoder(codecs.IncrementalDecoder):
    def decode(self, input, final=False):
        return codecs.charmap_decode(input,self.errors,decoding_table)
[0]

class StreamWriter(Codec,codecs.StreamWriter):
    pass

class StreamReader(Codec,codecs.StreamReader):
    pass

### encodings module API

def getregentry():
    return codecs.CodecInfo(
        name='rulayout',
        encode=Codec().encode,
        decode=Codec().decode,
        incrementalencoder=IncrementalEncoder,
        incrementaldecoder=IncrementalDecoder,
        streamreader=StreamReader,
        streamwriter=StreamWriter,
    )


### Decoding Table

decoding_table = (
    u'\u0000'   #  u'\u0000' ->         NULL
    u'\u0001'   #  u'\u0001' ->         START OF HEADING
    u'\u0002'   #  u'\u0002' ->         START OF TEXT
    u'\u0003'   #  u'\u0003' ->         END OF TEXT
    u'\u0004'   #  u'\u0004' ->         END OF TRANSMISSION
    u'\u0005'   #  u'\u0005' ->         ENQUIRY
    u'\u0006'   #  u'\u0006' ->         ACKNOWLEDGE
    u'\u0007'   #  u'\u0007' ->         BELL
    u'\u0008'   #  u'\u0008' ->         BACKSPACE
    u'\u0009'   #  u'\u0009' ->         HORIZONTAL TABULATION
    u'\u000A'   #  u'\u000A' ->         LINE FEED
    u'\u000B'   #  u'\u000B' ->         VERTICAL TABULATION
    u'\u000C'   #  u'\u000C' ->         FORM FEED
    u'\u000D'   #  u'\u000D' ->         CARRIAGE RETURN
    u'\u000E'   #  u'\u000E' ->         SHIFT OUT
    u'\u000F'   #  u'\u000F' ->         SHIFT IN
    u'\u0010'   #  u'\u0010' ->         DATA LINK ESCAPE
    u'\u0011'   #  u'\u0011' ->         DEVICE CONTROL ONE
    u'\u0012'   #  u'\u0012' ->         DEVICE CONTROL TWO
    u'\u0013'   #  u'\u0013' ->         DEVICE CONTROL THREE
    u'\u0014'   #  u'\u0014' ->         DEVICE CONTROL FOUR
    u'\u0015'   #  u'\u0015' ->         NEGATIVE ACKNOWLEDGE
    u'\u0016'   #  u'\u0016' ->         SYNCHRONOUS IDLE
    u'\u0017'   #  u'\u0017' ->         END OF TRANSMISSION BLOCK
    u'\u0018'   #  u'\u0018' ->         CANCEL
    u'\u0019'   #  u'\u0019' ->         END OF MEDIUM
    u'\u001A'   #  u'\u001A' ->         SUBSTITUTE
    u'\u001B'   #  u'\u001B' ->         ESCAPE
    u'\u001C'   #  u'\u001C' ->         FILE SEPARATOR
    u'\u001D'   #  u'\u001D' ->         GROUP SEPARATOR
    u'\u001E'   #  u'\u001E' ->         RECORD SEPARATOR
    u'\u001F'   #  u'\u001F' ->         UNIT SEPARATOR
    u'\u0020'   #  u'\u0020' ->         SPACE
    u'\u0021'   #  u'\u0021' ->         EXCLAMATION MARK
    u'\u0022'   #  u'\u0022' ->         QUOTATION MARK
    u'\u0023'   #  u'\u0023' ->         NUMBER SIGN
    u'\u0024'   #  u'\u0024' ->         DOLLAR SIGN
    u'\u0025'   #  u'\u0025' ->         PERCENT SIGN
    u'\u0026'   #  u'\u0026' ->         AMPERSAND
    u'\u0027'   #  u'\u0027' ->         APOSTROPHE
    u'\u0028'   #  u'\u0028' ->         LEFT PARENTHESIS
    u'\u0029'   #  u'\u0029' ->         RIGHT PARENTHESIS
    u'\u002A'   #  u'\u002A' ->         ASTERISK
    u'\u002B'   #  u'\u002B' ->         PLUS SIGN
    u'\u002C'   #  u'\u002C' ->         COMMA
    u'\u002D'   #  u'\u002D' ->         HYPHEN-MINUS
    u'\u002E'   #  u'\u002E' ->         FULL STOP
    u'\u002F'   #  u'\u002F' ->         SOLIDUS
    u'\u0030'   #  u'\u0030' ->         DIGIT ZERO
    u'\u0031'   #  u'\u0031' ->         DIGIT ONE
    u'\u0032'   #  u'\u0032' ->         DIGIT TWO
    u'\u0033'   #  u'\u0033' ->         DIGIT THREE
    u'\u0034'   #  u'\u0034' ->         DIGIT FOUR
    u'\u0035'   #  u'\u0035' ->         DIGIT FIVE
    u'\u0036'   #  u'\u0036' ->         DIGIT SIX
    u'\u0037'   #  u'\u0037' ->         DIGIT SEVEN
    u'\u0038'   #  u'\u0038' ->         DIGIT EIGHT
    u'\u0039'   #  u'\u0039' ->         DIGIT NINE
    u'\u003A'   #  u'\u003A' ->         COLON
    u'\u003B'   #  u'\u003B' ->         SEMICOLON
    u'\u003C'   #  u'\u003C' ->         LESS-THAN SIGN
    u'\u003D'   #  u'\u003D' ->         EQUALS SIGN
    u'\u003E'   #  u'\u003E' ->         GREATER-THAN SIGN
    u'\u003F'   #  u'\u003F' ->         QUESTION MARK
    u'\u0040'   #  u'\u0040' ->         COMMERCIAL AT
    u'\u0041'   #  u'\u0041' ->         LATIN CAPITAL LETTER A
    u'\u0042'   #  u'\u0042' ->         LATIN CAPITAL LETTER B
    u'\u0043'   #  u'\u0043' ->         LATIN CAPITAL LETTER C
    u'\u0044'   #  u'\u0044' ->         LATIN CAPITAL LETTER D
    u'\u0045'   #  u'\u0045' ->         LATIN CAPITAL LETTER E
    u'\u0046'   #  u'\u0046' ->         LATIN CAPITAL LETTER F
    u'\u0047'   #  u'\u0047' ->         LATIN CAPITAL LETTER G
    u'\u0048'   #  u'\u0048' ->         LATIN CAPITAL LETTER H
    u'\u0049'   #  u'\u0049' ->         LATIN CAPITAL LETTER I
    u'\u004A'   #  u'\u004A' ->         LATIN CAPITAL LETTER J
    u'\u004B'   #  u'\u004B' ->         LATIN CAPITAL LETTER K
    u'\u004C'   #  u'\u004C' ->         LATIN CAPITAL LETTER L
    u'\u004D'   #  u'\u004D' ->         LATIN CAPITAL LETTER M
    u'\u004E'   #  u'\u004E' ->         LATIN CAPITAL LETTER N
    u'\u004F'   #  u'\u004F' ->         LATIN CAPITAL LETTER O
    u'\u0050'   #  u'\u0050' ->         LATIN CAPITAL LETTER P
    u'\u0051'   #  u'\u0051' ->         LATIN CAPITAL LETTER Q
    u'\u0052'   #  u'\u0052' ->         LATIN CAPITAL LETTER R
    u'\u0053'   #  u'\u0053' ->         LATIN CAPITAL LETTER S
    u'\u0054'   #  u'\u0054' ->         LATIN CAPITAL LETTER T
    u'\u0055'   #  u'\u0055' ->         LATIN CAPITAL LETTER U
    u'\u0056'   #  u'\u0056' ->         LATIN CAPITAL LETTER V
    u'\u0057'   #  u'\u0057' ->         LATIN CAPITAL LETTER W
    u'\u0058'   #  u'\u0058' ->         LATIN CAPITAL LETTER X
    u'\u0059'   #  u'\u0059' ->         LATIN CAPITAL LETTER Y
    u'\u005A'   #  u'\u005A' ->         LATIN CAPITAL LETTER Z
    u'\u005B'   #  u'\u005B' ->         LEFT SQUARE BRACKET
    u'\u005C'   #  u'\u005C' ->         REVERSE SOLIDUS
    u'\u005D'   #  u'\u005D' ->         RIGHT SQUARE BRACKET
    u'\u005E'   #  u'\u005E' ->         CIRCUMFLEX ACCENT
    u'\u005F'   #  u'\u005F' ->         LOW LINE
    u'\u0060'   #  u'\u0060' ->         GRAVE ACCENT
    u'\u0061'   #  u'\u0061' ->         LATIN SMALL LETTER A
    u'\u0062'   #  u'\u0062' ->         LATIN SMALL LETTER B
    u'\u0063'   #  u'\u0063' ->         LATIN SMALL LETTER C
    u'\u0064'   #  u'\u0064' ->         LATIN SMALL LETTER D
    u'\u0065'   #  u'\u0065' ->         LATIN SMALL LETTER E
    u'\u0066'   #  u'\u0066' ->         LATIN SMALL LETTER F
    u'\u0067'   #  u'\u0067' ->         LATIN SMALL LETTER G
    u'\u0068'   #  u'\u0068' ->         LATIN SMALL LETTER H
    u'\u0069'   #  u'\u0069' ->         LATIN SMALL LETTER I
    u'\u006A'   #  u'\u006A' ->         LATIN SMALL LETTER J
    u'\u006B'   #  u'\u006B' ->         LATIN SMALL LETTER K
    u'\u006C'   #  u'\u006C' ->         LATIN SMALL LETTER L
    u'\u006D'   #  u'\u006D' ->         LATIN SMALL LETTER M
    u'\u006E'   #  u'\u006E' ->         LATIN SMALL LETTER N
    u'\u006F'   #  u'\u006F' ->         LATIN SMALL LETTER O
    u'\u0070'   #  u'\u0070' ->         LATIN SMALL LETTER P
    u'\u0071'   #  u'\u0071' ->         LATIN SMALL LETTER Q
    u'\u0072'   #  u'\u0072' ->         LATIN SMALL LETTER R
    u'\u0073'   #  u'\u0073' ->         LATIN SMALL LETTER S
    u'\u0074'   #  u'\u0074' ->         LATIN SMALL LETTER T
    u'\u0075'   #  u'\u0075' ->         LATIN SMALL LETTER U
    u'\u0076'   #  u'\u0076' ->         LATIN SMALL LETTER V
    u'\u0077'   #  u'\u0077' ->         LATIN SMALL LETTER W
    u'\u0078'   #  u'\u0078' ->         LATIN SMALL LETTER X
    u'\u0079'   #  u'\u0079' ->         LATIN SMALL LETTER Y
    u'\u007A'   #  u'\u007A' ->         LATIN SMALL LETTER Z
    u'\u007B'   #  u'\u007B' ->         LEFT CURLY BRACKET
    u'\u007C'   #  u'\u007C' ->         VERTICAL LINE
    u'\u007D'   #  u'\u007D' ->         RIGHT CURLY BRACKET
    u'\u007E'   #  u'\u007E' ->         TILDE
    u'\u007F'   #  u'\u007F' ->         DELETE
    u'\u0080'   #  u'\u0080' ->         <control>
    u'\u0081'   #  u'\u0081' ->         <control>
    u'\u0082'   #  u'\u0082' ->         <control>
    u'\u0083'   #  u'\u0083' ->         <control>
    u'\u0084'   #  u'\u0084' ->         <control>
    u'\u0085'   #  u'\u0085' ->         <control>
    u'\u0086'   #  u'\u0086' ->         <control>
    u'\u0087'   #  u'\u0087' ->         <control>
    u'\u0088'   #  u'\u0088' ->         <control>
    u'\u0089'   #  u'\u0089' ->         <control>
    u'\u008A'   #  u'\u008A' ->         <control>
    u'\u008B'   #  u'\u008B' ->         <control>
    u'\u008C'   #  u'\u008C' ->         <control>
    u'\u008D'   #  u'\u008D' ->         <control>
    u'\u008E'   #  u'\u008E' ->         <control>
    u'\u008F'   #  u'\u008F' ->         <control>
    u'\u0090'   #  u'\u0090' ->         <control>
    u'\u0091'   #  u'\u0091' ->         <control>
    u'\u0092'   #  u'\u0092' ->         <control>
    u'\u0093'   #  u'\u0093' ->         <control>
    u'\u0094'   #  u'\u0094' ->         <control>
    u'\u0095'   #  u'\u0095' ->         <control>
    u'\u0096'   #  u'\u0096' ->         <control>
    u'\u0097'   #  u'\u0097' ->         <control>
    u'\u0098'   #  u'\u0098' ->         <control>
    u'\u0099'   #  u'\u0099' ->         <control>
    u'\u009A'   #  u'\u009A' ->         <control>
    u'\u009B'   #  u'\u009B' ->         <control>
    u'\u009C'   #  u'\u009C' ->         <control>
    u'\u009D'   #  u'\u009D' ->         <control>
    u'\u009E'   #  u'\u009E' ->         <control>
    u'\u009F'   #  u'\u009F' ->         <control>
    u'\u00A0'   #  u'\u00A0' ->         NO-BREAK SPACE
    u'\u0401'   #  u'\u0401' ->         CYRILLIC CAPITAL LETTER IO
    u'\u0402'   #  u'\u0402' ->         CYRILLIC CAPITAL LETTER DJE
    u'\u0403'   #  u'\u0403' ->         CYRILLIC CAPITAL LETTER GJE
    u'\u0404'   #  u'\u0404' ->         CYRILLIC CAPITAL LETTER UKRAINIAN IE
    u'\u0405'   #  u'\u0405' ->         CYRILLIC CAPITAL LETTER DZE
    u'\u0406'   #  u'\u0406' ->         CYRILLIC CAPITAL LETTER BYELORUSSIAN-
UKRAINIAN I
    u'\u0407'   #  u'\u0407' ->         CYRILLIC CAPITAL LETTER YI
    u'\u0408'   #  u'\u0408' ->         CYRILLIC CAPITAL LETTER JE
    u'\u0409'   #  u'\u0409' ->         CYRILLIC CAPITAL LETTER LJE
    u'\u040A'   #  u'\u040A' ->         CYRILLIC CAPITAL LETTER NJE
    u'\u040B'   #  u'\u040B' ->         CYRILLIC CAPITAL LETTER TSHE
    u'\u040C'   #  u'\u040C' ->         CYRILLIC CAPITAL LETTER KJE
    u'\u00AD'   #  u'\u00AD' ->         SOFT HYPHEN
    u'\u040E'   #  u'\u040E' ->         CYRILLIC CAPITAL LETTER SHORT U
    u'\u040F'   #  u'\u040F' ->         CYRILLIC CAPITAL LETTER DZHE
    u'\u0410'   #  u'\u0410' ->         CYRILLIC CAPITAL LETTER A
    u'\u0411'   #  u'\u0411' ->         CYRILLIC CAPITAL LETTER BE
    u'\u0412'   #  u'\u0412' ->         CYRILLIC CAPITAL LETTER VE
    u'\u0413'   #  u'\u0413' ->         CYRILLIC CAPITAL LETTER GHE
    u'\u0414'   #  u'\u0414' ->         CYRILLIC CAPITAL LETTER DE
    u'\u0415'   #  u'\u0415' ->         CYRILLIC CAPITAL LETTER IE
    u'\u0416'   #  u'\u0416' ->         CYRILLIC CAPITAL LETTER ZHE
    u'\u0417'   #  u'\u0417' ->         CYRILLIC CAPITAL LETTER ZE
    u'\u0418'   #  u'\u0418' ->         CYRILLIC CAPITAL LETTER I
    u'\u0419'   #  u'\u0419' ->         CYRILLIC CAPITAL LETTER SHORT I
    u'\u041A'   #  u'\u041A' ->         CYRILLIC CAPITAL LETTER KA
    u'\u041B'   #  u'\u041B' ->         CYRILLIC CAPITAL LETTER EL
    u'\u041C'   #  u'\u041C' ->         CYRILLIC CAPITAL LETTER EM
    u'\u041D'   #  u'\u041D' ->         CYRILLIC CAPITAL LETTER EN
    u'\u041E'   #  u'\u041E' ->         CYRILLIC CAPITAL LETTER O
    u'\u041F'   #  u'\u041F' ->         CYRILLIC CAPITAL LETTER PE
    u'\u0420'   #  u'\u0420' ->         CYRILLIC CAPITAL LETTER ER
    u'\u0421'   #  u'\u0421' ->         CYRILLIC CAPITAL LETTER ES
    u'\u0422'   #  u'\u0422' ->         CYRILLIC CAPITAL LETTER TE
    u'\u0423'   #  u'\u0423' ->         CYRILLIC CAPITAL LETTER U
    u'\u0424'   #  u'\u0424' ->         CYRILLIC CAPITAL LETTER EF
    u'\u0425'   #  u'\u0425' ->         CYRILLIC CAPITAL LETTER HA
    u'\u0426'   #  u'\u0426' ->         CYRILLIC CAPITAL LETTER TSE
    u'\u0427'   #  u'\u0427' ->         CYRILLIC CAPITAL LETTER CHE
    u'\u0428'   #  u'\u0428' ->         CYRILLIC CAPITAL LETTER SHA
    u'\u0429'   #  u'\u0429' ->         CYRILLIC CAPITAL LETTER SHCHA
    u'\u042A'   #  u'\u042A' ->         CYRILLIC CAPITAL LETTER HARD SIGN
    u'\u042B'   #  u'\u042B' ->         CYRILLIC CAPITAL LETTER YERU
    u'\u042C'   #  u'\u042C' ->         CYRILLIC CAPITAL LETTER SOFT SIGN
    u'\u042D'   #  u'\u042D' ->         CYRILLIC CAPITAL LETTER E
    u'\u042E'   #  u'\u042E' ->         CYRILLIC CAPITAL LETTER YU
    u'\u042F'   #  u'\u042F' ->         CYRILLIC CAPITAL LETTER YA
    u'\u0430'   #  u'\u0430' ->         CYRILLIC SMALL LETTER A
    u'\u0431'   #  u'\u0431' ->         CYRILLIC SMALL LETTER BE
    u'\u0432'   #  u'\u0432' ->         CYRILLIC SMALL LETTER VE
    u'\u0433'   #  u'\u0433' ->         CYRILLIC SMALL LETTER GHE
    u'\u0434'   #  u'\u0434' ->         CYRILLIC SMALL LETTER DE
    u'\u0435'   #  u'\u0435' ->         CYRILLIC SMALL LETTER IE
    u'\u0436'   #  u'\u0436' ->         CYRILLIC SMALL LETTER ZHE
    u'\u0437'   #  u'\u0437' ->         CYRILLIC SMALL LETTER ZE
    u'\u0438'   #  u'\u0438' ->         CYRILLIC SMALL LETTER I
    u'\u0439'   #  u'\u0439' ->         CYRILLIC SMALL LETTER SHORT I
    u'\u043A'   #  u'\u043A' ->         CYRILLIC SMALL LETTER KA
    u'\u043B'   #  u'\u043B' ->         CYRILLIC SMALL LETTER EL
    u'\u043C'   #  u'\u043C' ->         CYRILLIC SMALL LETTER EM
    u'\u043D'   #  u'\u043D' ->         CYRILLIC SMALL LETTER EN
    u'\u043E'   #  u'\u043E' ->         CYRILLIC SMALL LETTER O
    u'\u043F'   #  u'\u043F' ->         CYRILLIC SMALL LETTER PE
    u'\u0440'   #  u'\u0440' ->         CYRILLIC SMALL LETTER ER
    u'\u0441'   #  u'\u0441' ->         CYRILLIC SMALL LETTER ES
    u'\u0442'   #  u'\u0442' ->         CYRILLIC SMALL LETTER TE
    u'\u0443'   #  u'\u0443' ->         CYRILLIC SMALL LETTER U
    u'\u0444'   #  u'\u0444' ->         CYRILLIC SMALL LETTER EF
    u'\u0445'   #  u'\u0445' ->         CYRILLIC SMALL LETTER HA
    u'\u0446'   #  u'\u0446' ->         CYRILLIC SMALL LETTER TSE
    u'\u0447'   #  u'\u0447' ->         CYRILLIC SMALL LETTER CHE
    u'\u0448'   #  u'\u0448' ->         CYRILLIC SMALL LETTER SHA
    u'\u0449'   #  u'\u0449' ->         CYRILLIC SMALL LETTER SHCHA
    u'\u044A'   #  u'\u044A' ->         CYRILLIC SMALL LETTER HARD SIGN
    u'\u044B'   #  u'\u044B' ->         CYRILLIC SMALL LETTER YERU
    u'\u044C'   #  u'\u044C' ->         CYRILLIC SMALL LETTER SOFT SIGN
    u'\u044D'   #  u'\u044D' ->         CYRILLIC SMALL LETTER E
    u'\u044E'   #  u'\u044E' ->         CYRILLIC SMALL LETTER YU
    u'\u044F'   #  u'\u044F' ->         CYRILLIC SMALL LETTER YA
    u'\u2116'   #  u'\u2116' ->         NUMERO SIGN
    u'\u0451'   #  u'\u0451' ->         CYRILLIC SMALL LETTER IO
    u'\u0452'   #  u'\u0452' ->         CYRILLIC SMALL LETTER DJE
    u'\u0453'   #  u'\u0453' ->         CYRILLIC SMALL LETTER GJE
    u'\u0454'   #  u'\u0454' ->         CYRILLIC SMALL LETTER UKRAINIAN IE
    u'\u0455'   #  u'\u0455' ->         CYRILLIC SMALL LETTER DZE
    u'\u0456'   #  u'\u0456' ->         CYRILLIC SMALL LETTER BYELORUSSIAN-
UKRAINIAN I
    u'\u0457'   #  u'\u0457' ->         CYRILLIC SMALL LETTER YI
    u'\u0458'   #  u'\u0458' ->         CYRILLIC SMALL LETTER JE
    u'\u0459'   #  u'\u0459' ->         CYRILLIC SMALL LETTER LJE
    u'\u045A'   #  u'\u045A' ->         CYRILLIC SMALL LETTER NJE
    u'\u045B'   #  u'\u045B' ->         CYRILLIC SMALL LETTER TSHE
    u'\u045C'   #  u'\u045C' ->         CYRILLIC SMALL LETTER KJE
    u'\u00A7'   #  u'\u00A7' ->         SECTION SIGN
    u'\u045E'   #  u'\u045E' ->         CYRILLIC SMALL LETTER SHORT U
    u'\u045F'   #  u'\u045F' ->         CYRILLIC SMALL LETTER DZHE
)

### Encoding table
encoding_table=codecs.charmap_build(decoding_table)
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to