Получить ASCII Int с помощью ord() немецкого умлаута (ÄÜÖ) в python

Есть некоторые проблемы с командой ord() и Unicode.

Мне нужно десятичное число введенных букв ASCII.

Например:

ord('ÄÖÜ') выводит следующие значения: [195, 132, 195, 150, 195, 156]

  • [195,132] = Ä
  • [195,150] = Ö
  • [195,156] = Ü

Это то, что я хочу:

  • [196] = Ä
  • [214] = Ö
  • [220] = Ü

Любые подсказки?


person Benny H.    schedule 06.11.2015    source источник
comment
это и это может помочь   -  person R Nar    schedule 06.11.2015


Ответы (2)


Это работает для меня:

>>> [ord(i) for i in unicode('ÄÖÜ','utf-8')]
[196, 214, 220]
person Robert    schedule 06.11.2015

Вам нужны кодовые точки Unicode, а не байты в кодировке UTF-8:

>>> mystring = u'ÄÖÜ'
>>> [ord(c) for c in mystring]
[196, 214, 220]
person chepner    schedule 06.11.2015
comment
Это может сработать, если моя строка помещена в сам python, строка, которую она поместила в переменную, но это тоже может сработать, большое спасибо :) - person Benny H.; 07.11.2015
comment
Единственная разница между моим ответом и ответом Роберта заключается в использовании литерала Unicode по сравнению с вызовом unicode; оба создают один и тот же объект Unicode с учетом кодировки символов по умолчанию. (В моем ответе литерал Unicode использует любую действующую кодировку символов; у Роберта строковый литерал, переданный в качестве первого аргумента, должен быть UTF-8, иначе второй аргумент неверен.) - person chepner; 07.11.2015
comment
Ааа, понятно, могу я использовать этот литерал юникода и для переменных? - person Benny H.; 07.11.2015
comment
Конечно. Вся информация хранится вместе с самим значением; переменная — это просто имя, связанное со значением. - person chepner; 07.11.2015
comment
да я знаю, но как это выглядит? что-то вроде этого u'mystring'? я думаю, это не сработает, потому что тогда это в строковых кавычках. - person Benny H.; 07.11.2015
comment
Как вы получаете строку? - person chepner; 07.11.2015
comment
Извините, забыл об этой теме ;-) в любом случае это не имеет значения, потому что это работает, как указано выше :-) Большое спасибо - person Benny H.; 24.12.2015