0
0 комментариев

Иностранцы получают из России письма на русском, при этом кодировка напрочь сбивается и выдается в Юникоде.

исходный «текст» письма:

%u0421%u043A%u0430%u043D%u0435%u0440 %u043F%u0440%u0438 %u0437%u0430%u043F%u0443%u0441%u043A%u0435 %u0432%u044B%u0434%u0430%u0435%u0442 %u043E%u0448%u0438%u0431%u043A%u0443, %u043D%u0435

мой скрипт:

# -*- coding:utf-8 -*-
 
p_text = str.lower(raw_input())
 
dict_utf = {
'u0410': 'А', 'u0430': 'а',
'u0411': 'Б', 'u0431': 'б',
'u0412': 'В', 'u0432': 'в',
'u0413': 'Г', 'u0433': 'г',
'u0414': 'Д', 'u0434': 'д',
'u0415': 'Е', 'u0435': 'е',
'u0401': 'Ё', 'u0451': 'ё',
'u0416': 'Ж', 'u0436': 'ж',
'u0417': 'З', 'u0437': 'з',
'u0418': 'И', 'u0438': 'и',
'u0419': 'Й', 'u0439': 'й',
'u041a': 'К', 'u043a': 'к',
'u041b': 'Л', 'u043b': 'л',
'u041c': 'М', 'u043c': 'м',
'u041d': 'Н', 'u043d': 'н',
'u041e': 'О', 'u043e': 'о',
'u041f': 'П', 'u043f': 'п',
'u0420': 'Р', 'u0440': 'р',
'u0421': 'С', 'u0441': 'с',
'u0422': 'Т', 'u0442': 'т',
'u0423': 'У', 'u0443': 'у',
'u0424': 'Ф', 'u0444': 'ф',
'u0425': 'Х', 'u0445': 'х',
'u0426': 'Ц', 'u0446': 'ц',
'u0427': 'Ч', 'u0447': 'ч',
'u0428': 'Ш', 'u0448': 'ш',
'u0429': 'Щ', 'u0449': 'щ',
'u042a': 'Ъ', 'u044a': 'ъ',
'u042d': 'Ы', 'u044b': 'ы',
'u042c': 'Ь', 'u044c': 'ь',
'u042d': 'Э', 'u044d': 'э',
'u042e': 'Ю', 'u044e': 'ю',
'u042f': 'Я', 'u044f': 'я',
}
 
x = ''
for key in dict_utf:
    if key in p_text:
        x += dict_utf.get(key)
print x

вбиваю текст из письма, выводит пока только «Скрена», т.е. нарушена последовательность, т.к. делаю отбор из словаря сначала, иначе, если по фразе перебирать, он перебирает посимвольно.

как привести все в приемлемый для человека вид?

Если есть другой вариант, при помощи encode, его тоже интересно узнать.


Добавить комментарий