|
Модераторы: Daevaorn |
|
HellanD |
|
|||
Опытный Профиль Группа: Участник Сообщений: 443 Регистрация: 16.5.2006 Где: Киев Репутация: 1 Всего: 2 |
Есть у меня кусок кода, который читает данные(они на русском языке) из файла:
А он мне выдает вот такое... Можете обьяснить причину? В начале кода у меня стоит # -*- coding: cp1251 -*- self.name = unicode(file.readline()[:-1]) UnicodeDecodeError: 'ascii' codec can't decode byte 0xcf in position 0: ordinal not in range(128) |
|||
|
||||
srd |
|
|||
Нереварин Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 7 Всего: 49 |
Попробуй:
Если при декодировании "узкой" строки в юникод не задана кодировка, т.е. используется кодек по-умолчанию ascii, который, разумеется, не понимает русских символов. Этот кодек выбирается один раз при стартапе питона и потом менять его нельзя. Потому пользуйся методами decode/encode. Можешь ещё помедитировать на код метода setencoding() в файле Lib/site.py в том каталоге, где у тебя установлен питон Это относится только к кодировке файла с исходным кодом. Об остальном ты должен позаботиться сам -------------------- Не смей читать мою подпись!!! |
|||
|
||||
HellanD |
|
|||
Опытный Профиль Группа: Участник Сообщений: 443 Регистрация: 16.5.2006 Где: Киев Репутация: 1 Всего: 2 |
Попробовал заюзать
Есть проблемка... Он в конец строки добавляет казяблик(я так понимаю символ окончания строки), а это не хорошо...Я и так от них избавлялся с помощью страшного file.readline()[:-1]....(Кстате а это как то можно улутшить??) Добавлено через 4 минуты и 15 секунд Стоп на счет казябликов сори, сам напутал....По ошибке убрал [:-1] |
|||
|
||||
pythonwin |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
HellanD, можешь ещё посмотреть Использование Unicode в Python
|
|||
|
||||
srd |
|
||||
Нереварин Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 7 Всего: 49 |
Хм. Если в конце файла нету символов перевода строки, то предпоследний вызов readline() вернёт строку без "\n" на конце. И в этом случае [:-1] уничтожит последний значащий символ. Можно, например, воспользоваться методом rstrip()
Добавлено через 5 минут и 51 секунду pythonwin, Ух, ты постоянно где-то откапываешь ссылки на интересные материалы. -------------------- Не смей читать мою подпись!!! |
||||
|
|||||
pythonwin |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
насчет интересных ссылок: 1) они постепенно накапливаются 2) можно многое почерпнуть читая http://python.com.ua/ru/links/blogi/ и статьи на http://python.com.ua/ru/articles/Python/ |
|||
|
||||
HellanD |
|
|||
Опытный Профиль Группа: Участник Сообщений: 443 Регистрация: 16.5.2006 Где: Киев Репутация: 1 Всего: 2 |
Вот помню что точно когдато над ним медетировал....Теперь тесты на моей тачке запускаются а на другой нет....Можете еще подробно написать как над ним можно помедетировать? |
|||
|
||||
Ulysses4j |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 3 Всего: 10 |
Цитата по предложенному pythonwin материалу "Использование Unicode в Python" (стр. 7). -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
||||||
|
|||||||
HellanD |
|
|||
Опытный Профиль Группа: Участник Сообщений: 443 Регистрация: 16.5.2006 Где: Киев Репутация: 1 Всего: 2 |
Да я то понял...Предложение такое откатить назад либу site.py...И решить вопрос иначе (А если кодировка не 'utf-8'?? по моему "cp1251")
|
|||
|
||||
pythonwin |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
вот статья о питоне+unicode == All About Python and Unicode
Добавлено через 4 минуты и 10 секунд Как узнать кодировку? Добавлено через 6 минут и 56 секунд http://chardet.feedparser.org/ Добавлено через 9 минут и 29 секунд PS администрации - закрепите, пожалуйста, тему |
|||
|
||||
HellanD |
|
|||
Опытный Профиль Группа: Участник Сообщений: 443 Регистрация: 16.5.2006 Где: Киев Репутация: 1 Всего: 2 |
Еще вопрос связанный с кодировками... Вообщем захотел я получит доступ к кнопке "пуск" на рабочем столе (Винда русская ХР), узнал с помощью проги winspectr ее дескриптор, а по нему с помощью функции getWindowText узнал название окна (оно на русском и питон это выводит козябликами)....
Хочу теперь найти дискриптор с помощю функции findwindow а она ничего не может найти (Ну оно и понятно я название окна передаю не понятно какое....) Подскажите плиз. Буду благодарен |
|||
|
||||
pythonwin |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
HellanD, это тебе в GUI или вариант "поиграйся" decode и encode
|
|||
|
||||
HellanD |
|
|||
Опытный Профиль Группа: Участник Сообщений: 443 Регистрация: 16.5.2006 Где: Киев Репутация: 1 Всего: 2 |
Ну не знаю причем тут ГУИ вообще...Англиские контролы ловяться на раз два три! А вот с decode и encode игрался - но не долго всегда получал эрор! Типа что не аски декодируешь!
|
|||
|
||||
pythonwin |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
HellanD, создай отдельную тему и выложи туда код
|
|||
|
||||
stoune |
|
||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 9.5.2008 Репутация: нет Всего: нет |
Курить здесь http://www.faqs.org/docs/diveintopython/kgp_unicode.html Вкратце, создать sitecustomize.py файл в site-packages и вернуть кодировку по умолчанию, например utf8 |
||||
|
|||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |