UTF-8 и верхний ()

Я хочу преобразовать строки UTF-8 с помощью встроенных функций такой в качестве верхних () и использовать для своей выгоды ().

Например:

>>> mystring = "işğüı"
>>> print mystring.upper()
Işğüı  # should be İŞĞÜI instead.

Как я могу зафиксировать это?

9
задан Hellnar 11 September 2010 в 18:40
поделиться

2 ответа

Не выполнять действия с закодированными строками; сначала декодировать в юникод .

>>> mystring = "işğüı"
>>> print mystring.decode('utf-8').upper()
IŞĞÜI
14
ответ дан 4 December 2019 в 09:12
поделиться

На самом деле, в качестве общей стратегии лучше всего всегда сохранять текст в формате Unicode, когда он находится в памяти: декодировать его в момент ввода и кодировать именно в тот момент, когда вам нужно его вывести, если есть конкретная кодировка. требования во время ввода и / или ввода.

Даже если вы не решите принять эту общую стратегию (а вам следует это сделать!), Единственный надежный способ выполнить требуемую задачу - это декодировать, обрабатывать, снова кодировать - никогда не работать с закодированными формами. . То есть: [

mystring = "işğüı"
print mystring.decode('utf-8').upper().encode('utf-8')

] при условии, что вы ограничены кодированными строками при назначении и для целей вывода. (Ограничение вывода, к сожалению, реалистично, ограничение присваивания - нет - просто выполните mystring = u "işğüı" , сделав его Unicode с самого начала, и сэкономьте хотя бы .decode вызов! -)

9
ответ дан 4 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: