Rel
Янв. 20, 2009 02:36:28
Добрый день,
Столкнулся с проблемой, очевидного решения которой не вижу.
Есть GUI на Qt, которое отдаёт скрипту на питоне две строки в UTF-8. Сам скрипт тоже написан в той же кодировке.
Проблема следующая: одна из строк - имя директории. Её наличие проверяется с помощью os.path.exists(dir). В случае с английскими именами всё в порядке, но стоит встретиться русским и питон тут же выдаёт false, даже если директория существует.
Почему так происходит - понятно.
Существует ли какой-нибудь способ реализовать эту проверку, не меняя кодировку получаемых строк и файла питона на cp1251?
Система - WinXP.
Спасибо.
igor.kaist
Янв. 20, 2009 08:55:56
Поменять кодировку строки, самое простое. Чем это не удобно в твоем случае?
Rel
Янв. 20, 2009 16:15:32
igor.kaist
Поменять кодировку строки, самое простое. Чем это не удобно в твоем случае?
Тем, что питон не умеет приводить юникодные строки с русскими символами к cp1251
Viper
Янв. 20, 2009 17:06:17
Rel
Тем, что питон не умеет приводить юникодные строки с русскими символами к cp1251
ґґґ … смешно … может у тебя строка просто не юникод?
BTW utf-8 != unicode
Ferroman
Янв. 20, 2009 17:10:54
Тем, что питон не умеет приводить юникодные строки с русскими символами к cp1251
С чего вы это взяли? Да ещё так безапелляционно заявляете.
# -*- coding: UTF-8 -*-
testline = "строка с русскими символами и english letters"
print testline.decode('utf-8')
testline.decode('utf-8').encode('cp1251')
print testline
Ferroman
Янв. 20, 2009 17:13:01
Проверить просто - проверяйте на наличие UnicodeEncodeError исключения при попытке teststring.decode('utf-8')
Rel
Янв. 20, 2009 17:18:48
Ferroman
Тем, что питон не умеет приводить юникодные строки с русскими символами к cp1251
С чего вы это взяли? Да ещё так безапелляционно заявляете.
# -*- coding: UTF-8 -*-
testline = "строка с русскими символами и english letters"
print testline.decode('utf-8')
testline.decode('utf-8').encode('cp1251')
print testline
Действительно. Благодарю. А я всё на ошибки ascii-кодека натыкался при попытке прямой конвертации.