Форум сайта python.su
Добрый день,
Столкнулся с проблемой, очевидного решения которой не вижу.
Есть GUI на Qt, которое отдаёт скрипту на питоне две строки в UTF-8. Сам скрипт тоже написан в той же кодировке.
Проблема следующая: одна из строк - имя директории. Её наличие проверяется с помощью os.path.exists(dir). В случае с английскими именами всё в порядке, но стоит встретиться русским и питон тут же выдаёт false, даже если директория существует.
Почему так происходит - понятно.
Существует ли какой-нибудь способ реализовать эту проверку, не меняя кодировку получаемых строк и файла питона на cp1251?
Система - WinXP.
Спасибо.
Отредактировано (Янв. 20, 2009 02:40:07)
Офлайн
Поменять кодировку строки, самое простое. Чем это не удобно в твоем случае?
Офлайн
igor.kaistТем, что питон не умеет приводить юникодные строки с русскими символами к cp1251
Поменять кодировку строки, самое простое. Чем это не удобно в твоем случае?
Офлайн
Relґґґ … смешно … может у тебя строка просто не юникод?
Тем, что питон не умеет приводить юникодные строки с русскими символами к cp1251
Отредактировано (Янв. 20, 2009 17:07:02)
Офлайн
Тем, что питон не умеет приводить юникодные строки с русскими символами к cp1251С чего вы это взяли? Да ещё так безапелляционно заявляете.
# -*- coding: UTF-8 -*-
testline = "строка с русскими символами и english letters"
print testline.decode('utf-8')
testline.decode('utf-8').encode('cp1251')
print testline
Офлайн
Проверить просто - проверяйте на наличие UnicodeEncodeError исключения при попытке teststring.decode('utf-8')
Офлайн
FerromanДействительно. Благодарю. А я всё на ошибки ascii-кодека натыкался при попытке прямой конвертации.Тем, что питон не умеет приводить юникодные строки с русскими символами к cp1251С чего вы это взяли? Да ещё так безапелляционно заявляете.# -*- coding: UTF-8 -*-
testline = "строка с русскими символами и english letters"
print testline.decode('utf-8')
testline.decode('utf-8').encode('cp1251')
print testline
Офлайн