Дешифрование не удалось избежать Unicode от SQL Server в Python? - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть файл CSV, похоже, UTF-16, выгруженный из SQL Server.Этот файл содержит правильно закодированные акценты (испанский), но некоторые строки кодируются по-разному.Например:

0xd83d0xde1b0xd83d0xde1b0xd83d0xde1b

Это странное кодирование для

\ud83d\ude1b\ud83d\ude1b\ud83d\ude1b

\ud83d\ude1b - это суррогатные пары для смайликов

Мне нужно преобразовать все вхороший, аккуратный файл UTF-8.Я пробовал бесконечные комбинации bytearray(), encode(), decode() и так далее.

Как я могу преобразовать этот файл смешанного UTF-16 и экранированного UTF-16 в соответствующие строки Python 3 и, наконец, сохранить их в новый файл UTF-8?

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете преобразовать шестнадцатеричные данные следующим образом:

>>> import binascii
>>> s = '0xd83d0xde1b0xd83d0xde1b0xd83d0xde1b'


>>> # Remove the leading '0x'
>>> hs = s.replace('0x', '')

>>> # Convert from hex to bytes
>>> bs = binascii.unhexlify(hs)
>>> bs
b'\xd8=\xde\x1b\xd8=\xde\x1b\xd8=\xde\x1b'

# Decode to str
>>> bs.decode('utf-16be')
'???'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...