Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нюансы перекодировки 
V
    Опции темы
lorien
Дата 23.9.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 16.11.2004
Где: omsk

Репутация: 2
Всего: 3



Блин, читал маны, читал, всё равно нифига не понимаю.
Что хочу: записать в файл соответствие между кодом в koi8-r и кодом в cp1251
Код

# -*- coding:koi8-r -*-

f = open('koi-win','w')
f2 = open('test','w')
for i in xrange(128,256):
    f.write(str(i) + ':' + str(ord(chr(i).encode('cp1251'))))


Получаю ошибку:

Код

>python do.py
Traceback (most recent call last):
  File "do.py", line 6, in ?
    f.write(str(i) + ':' + str(ord(chr(i).encode('cp1251'))))
  File "C:\sbin\Python24\lib\encodings\cp1251.py", line 18, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 0: ordinal
not in range(128)


upd: Вопрос решил. Кому интересно: http://community.livejournal.com/ru_python/84059.html

Это сообщение отредактировал(а) lorien - 23.9.2006, 21:06
PM WWW   Вверх
pythonwin
Дата 25.9.2006, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Добро пожаловать на форум Python Vingrad. smile

PM WWW GTalk Jabber   Вверх
albertn
Дата 25.9.2006, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



При таком подходе могут возникнуть проблемы с локалью и кодировками, поэтому правильно писать так:
Код

f = open('koi-win','w')
c1 = 'koi8-r'
c2 = 'cp1251'
for i in xrange(128,255):
    try:
        ch1 = chr(i).decode(c1).encode(c1)
        ch2 = ch1.decode(c1).encode(c2)
        f.write("%d(%s):%d(%s)\n" % (ord(ch1),ch1,ord(ch2),ch2))
    except:
        pass
f.close()

PM WWW ICQ   Вверх
pythonwin
Дата 25.9.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



albertn, классно - автоматизировал!
Вот только будет ли использовать lorien, твой код?
PM WWW GTalk Jabber   Вверх
albertn
Дата 25.9.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(pythonwin @ 25.9.2006,  11:28)
albertn, классно - автоматизировал!
Вот только будет ли использовать lorien, твой код?

Я просто работаю под Linux, и локаль у меня UTF-8, и его код у меня просто бы не заработал как надо.
PM WWW ICQ   Вверх
pythonwin
Дата 25.9.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(albertn @  25.9.2006,  18:33 Найти цитируемый пост)

Я просто работаю под Linux, и локаль у меня UTF-8, и его код у меня просто бы не заработал как надо. 

у меня вопрос:
1) какая ОС (Debian?)
2) +1 за то что не поленился и разобрался с кодом, да и сделал код более универсальным
PM WWW GTalk Jabber   Вверх
albertn
Дата 25.9.2006, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(pythonwin @  25.9.2006,  11:44 Найти цитируемый пост)
какая ОС (Debian?)

OpenSuse 10.0. имхо какой-то он неправильный, но уже привык. Сносить неохота.

Добавлено @ 11:48 
Цитата(pythonwin @  25.9.2006,  11:44 Найти цитируемый пост)
+1 за то что не поленился и разобрался с кодом, да и сделал код более универсальным

Спасибо
PM WWW ICQ   Вверх
pythonwin
Дата 25.9.2006, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(albertn @  25.9.2006,  18:47 Найти цитируемый пост)
Спасибо 

пожалуйста! smile
PM WWW GTalk Jabber   Вверх
Artemios
Дата 27.9.2006, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 18
Всего: 50



Цитата(albertn @  25.9.2006,  11:47 Найти цитируемый пост)
OpenSuse 10.0. имхо какой-то он неправильный, но уже привык. Сносить неохота.

Буквально два дня назад перешел с Mandriva2006 на SUSE10.1. Имхо, Мандрива тогда какая-то ну уж совсем неправильнаяsmile И PyQt у нее был только в контрибах, либо самому компилировать...

P.S. Кстати, в линуксах для перекодировки обычно пользовался recode:
$ recode KOI8-R..CP1251 < inputfile > outputfile

Это сообщение отредактировал(а) Artemios - 27.9.2006, 10:09


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
albertn
Дата 27.9.2006, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(Artemios @ 27.9.2006,  09:57)
Буквально два дня назад перешел с Mandriva2006 на SUSE10.1. Имхо, Мандрива тогда какая-то ну уж совсем неправильнаяsmile И PyQt у нее был только в контрибах, либо самому компилировать...

Извеняюсь за  smile , но чем-то мне не нравятся RPM. А отсутствие devel пакетов к большенству программ сильно мешает жить.

Это сообщение отредактировал(а) albertn - 27.9.2006, 10:10
PM WWW ICQ   Вверх
Artemios
Дата 27.9.2006, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 18
Всего: 50



Цитата(albertn @  27.9.2006,  10:08 Найти цитируемый пост)
Извеняюсь за   , но чем-то мне не нравятся RPM. 

Извиняюсь  smile , но на gentoo  я долго не выдержал smile


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
albertn
Дата 27.9.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 30
Всего: 34



Цитата(Artemios @ 27.9.2006,  10:11)
Извиняюсь  smile , но на gentoo  я долго не выдержал smile

Собсна  smile  Разработчики SuSe приложили очень много сил к организации гуи для настнойки почти всей системы. В этом есть конечно много достоинств, как и недостатков  в т.ч. в конфигах апатча очень тяжело разобраться руками, нарушение общей концепции, и т.д. А генту просто нужно крутить и крутить вечно. А вообще ни одной нормальной оси я так на рынке и не видел. Профессионалы говорят, что суся совсем не рулит.
PM WWW ICQ   Вверх
Cr@$h
Дата 27.9.2006, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Не надо стесняться, могу тему выделить. Правда, она убежит в соответствующий раздел. smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0528 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.