Найти - Пользователи
Полная версия: Перевод строки с кракозябрами в строку с русскими буквами
Начало » Python для новичков » Перевод строки с кракозябрами в строку с русскими буквами
1
jozheg
Здравствуйте!
Проблема возникла во время использования тестирования под Windows XP проекта, написанного на Python 2.6 под Ubuntu.
У меня есть функция (gtk.FileChooserDialog().get_filename()), которая под виндой возращает строку в кривом формате - как обычную строку, где unicode символы (т.е все русские буквы) менялись на ‘\xhh\xhh’ - т.е на два символа с шестнадцатиричными кодами.
Так например вместо пути
"C:\\Documents and Settings\\user\\Рабочий стол\\file"
я получал
"C:\\Documents and Settings\\user\\\xd0\xa0\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb\\file"
Помогите, пожалуйста, перевести эту строку в нормальную string, чтобы было платформонезависимо и нестрашно ).
Андрей Светлов
“Кривой формат” носит имя utf-8.
jozheg
Андрей Светлов
“Кривой формат” носит имя utf-8.
А как перевести в не utf-8 строку?
jozheg
Или это неправда, что в Windows нельзя создавать файлы с utf-именем?
Просто код:
filename = dialog.get_filename()
target = open(filename, "w")
target.write("There is no problems")
target.close()
в случае с русскими буквами этот код валится в Windows, но спокойно проходит под Ubuntu
Андрей Светлов
.decode('utf-8')
Почитайте уж что-нибудь по кодировкам.
На форуме народу много, может какие хорошие ссылки дадут.
jozheg
Спасибо, нашел небольшой how-to по кодировкам. Обязательно прочитаю
а для своей задачи уже придумал следующее решение:
import sys
encoding = sys.getfilesystemencoding()
filename = filename.decode('utf-8').encode(encoding)
И все OK!
Андрей Светлов
Подсказка: open принимает имя файла в юникоде, и это - предпочтительный вариант: http://asvetlov.blogspot.com/2011/03/import-and-unicode.html в части про mbcs.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB