Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 3, 2008 21:27:09

BION
От:
Зарегистрирован: 2007-08-26
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Кирилица -> hex

Проблема…
Мне необходимо преобразовать кирилические символы в hex unicode.
И именно так как это делается в Виндовом Charmap'e, т.е. например буква ‘П’ там имеет код “U+041F” - и оно есть верно.
Делал операцию в .NET'е получал 1F, т.е. почти правда.

В Python'е делаю так:

>>> unicode("П".decode('cp1251'))
u'\u040f' # не то

>>> unicode("П",'cp1251')
u'\u040f' # тож самое :)

>>> "П".encode('hex')
'8f' # всё не то
Помогите пожалст разобраться и решить задачу.



Отредактировано (Июнь 3, 2008 21:29:46)

Офлайн

#2 Июнь 3, 2008 21:37:44

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Кирилица -> hex

А ты в каком месте вбиваешь? =)
Не может быть путаницы с входными кодировками?



Отредактировано (Июнь 3, 2008 21:38:40)

Офлайн

#3 Июнь 3, 2008 21:56:31

BION
От:
Зарегистрирован: 2007-08-26
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Кирилица -> hex

shiza
А ты в каком месте вбиваешь? =)
Не может быть путаницы с входными кодировками?
:lol::lol::lol: Да, действитна, дело в том, что я тестил эти строки в Python(Command line) - дурная привычка.
В другом IDE всё работает как надо. :) Спасибо!



Офлайн

#4 Июнь 3, 2008 21:57:22

playpauseandstop
От:
Зарегистрирован: 2007-10-31
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Кирилица -> hex

Информация о букве П

но даже несмотря на это,

In [1]: # -*- coding: utf-8 -*-

In [2]: u'П'.encode('utf-16').encode('hex')
Out[2]: 'fffe1f04'
в то время как:
In [3]: hex(1055)
Out[3]: '0x41f'
странно, вообщем, хотя наверное просто надо углубится в эту тему и все станет по местам.



Офлайн

#5 Июнь 3, 2008 22:05:37

Andity
От:
Зарегистрирован: 2008-02-22
Сообщения: 63
Репутация: +  0  -
Профиль   Отправить e-mail  

Кирилица -> hex

Доклад в тему:
http://www.rupy.ru/member/5/#paper-6



Отредактировано (Июнь 3, 2008 22:07:55)

Офлайн

#6 Июнь 4, 2008 09:32:32

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Кирилица -> hex

>>> hex(ord©)

Конено ты должен разобраться сначала с кодировкой. “c” это строка длиной 1, соответственно она не может быть utf-8 и т.п., так как в этом случае строка будет длиной 2 символа и ord такую строку не проглотит.

..bw



Офлайн

#7 Июнь 4, 2008 11:45:29

hellt
От:
Зарегистрирован: 2008-03-14
Сообщения: 45
Репутация: +  0  -
Профиль   Отправить e-mail  

Кирилица -> hex

Andity
Доклад в тему:
http://www.rupy.ru/member/5/#paper-6
Замечательный доклад. Спасибо!

Согласно докладу - хороший пример будет выглядеть так:


str = “П”
print type(str)
print `str`
ustr = str.decode(“utf-8”)
print `ustr`



Отредактировано (Июнь 4, 2008 11:59:26)

Офлайн

#8 Июнь 4, 2008 14:32:58

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Кирилица -> hex

А что означают такие вот кавычки? `ustr`



Офлайн

#9 Июнь 4, 2008 14:59:09

hellt
От:
Зарегистрирован: 2008-03-14
Сообщения: 45
Репутация: +  0  -
Профиль   Отправить e-mail  

Кирилица -> hex

``==repr()



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version