Я поддерживаю API, который может получать ввод текста с нескольких языков.Мы бы хотели, чтобы кодировка строки была в utf-8
.
Большинство решений, которые пробовали предыдущие разработчики, включали в себя использование функции кодирования и декодирования.Это просто приводит к путанице в не поддерживаемом коде.
Для простоты я просто определяю x
здесь, но давайте представим, что это можно отправить моему API.Эта строка закодирована в latin-1
x = '\xe9toile' # x is a byte string in python 2
x.encode('utf-8')
, что приводит к
*** UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)
Единственный известный мне способ кодирования ее в utf-8
- это сначала декодировать ее как latin-1
затем сделайте кодировку.
x.decode('latin-1')
>>u'\xe9toile'
(x.decode('latin-1')).encode('utf-8')
>>'\xc3\xa9toile'
Что если бы я не знал, что строка байтов была закодирована в latin-1
, как бы я смог закодировать ее в utf-8
?
Что бы я сделал, если x
это китайская кодировка, которую я не знаю?
x = '\u54c8\u54c8'
x
- это всегда строка байтов.Любая помощь будет оценена.