Форум сайта python.su
Здравствуйте!
Проблема возникла во время использования тестирования под 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"
Офлайн
“Кривой формат” носит имя utf-8.
Офлайн
Андрей СветловА как перевести в не utf-8 строку?
“Кривой формат” носит имя utf-8.
Офлайн
Или это неправда, что в Windows нельзя создавать файлы с utf-именем?
Просто код:
filename = dialog.get_filename()
target = open(filename, "w")
target.write("There is no problems")
target.close()
Офлайн
.decode('utf-8')
Почитайте уж что-нибудь по кодировкам.
На форуме народу много, может какие хорошие ссылки дадут.
Офлайн
Спасибо, нашел небольшой how-to по кодировкам. Обязательно прочитаю
а для своей задачи уже придумал следующее решение:
import sys
encoding = sys.getfilesystemencoding()
filename = filename.decode('utf-8').encode(encoding)
Офлайн
Подсказка: open принимает имя файла в юникоде, и это - предпочтительный вариант: http://asvetlov.blogspot.com/2011/03/import-and-unicode.html в части про mbcs.
Офлайн