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