Как кодировать строку с символами из разных кодировок?

>>> a='привет, '.encode('utf-8')
>>> b='мир!'.encode('cp1251')
>>> c=a+b
>>> c
b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82, \xec\xe8\xf0!'

Как без потерь символов закодировать строку с в UTF-8?
  • Вопрос задан
  • 562 просмотра
Решения вопроса 1
@opravdin Автор вопроса
Решил проблему через костыль: так как в моем случае конфликт только с кавычками "ёлочками", я проверил, относятся ли байты \xab и \xbb к буквам Ы (\xd0\xab) и л (\xd0\xbb). Если нет, то заменял на пробел.
text=bytes()
i=0
while  i<=len(rawtext)-1:
	if rawtext[i]==187 and rawtext[i-1]!=208:
		text+=bytes([32])
	elif rawtext[i]==171 and rawtext[i-1]!=208:
		text+=bytes([32])
	else:
		text+=bytes([rawtext[i]])
	i+=1
return(text.decode('utf-8', 'ignore'))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kryvel
Системный администратор
Можно вопрос? Зачем Вам это?
Потому как все равно данная строка не будет нигде* отображаться правильно. Т.к. большинство софта используют одну таблицу кодировки для всего контента
Если всё же есть на это веская причина, то держите данные в бинарном виде и не склеивайте их как строки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы