Список необходимых преобразований кодировки символов: windows-1252 в UTF-8 - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть база данных SQL Server, заполненная плохо закодированными символами.Проблема заключалась в том, что ETL был написан на Java с неправильной кодировкой по умолчанию, и поэтому непосредственно загружал плохо закодированные символы.База данных буквально содержит символы ö вместо 1

. Я исправил проблему с ETL, теперь я хотел бы исправить существующие данные.Я знаю, что могу использовать REPLACE () для замены символов, но моя проблема в том, что у меня нет определенного списка символов и того, чем они «должны» быть.

Я искал в Интернетекакой-то определенный список, но я не могу его найти.Мне просто нужен большой список этого:

¶¶> ö

Ã>> é

и т. Д.

РЕДАКТИРОВАТЬ: я сначала подумал, что "плохо"кодировка была ISO 8859-15, на самом деле я только что проверил предыдущую кодировку по умолчанию, и это windows-1252.Я обновил заголовок поста.

1 Ответ

0 голосов
/ 09 февраля 2019

Это большой список.UTF-8 кодирует весь Unicode в один-четыре байта на кодовую точку Unicode.Есть 1114111 кодовых точек Unicode (1 112 064, если суррогаты UTF-16 не учитываются).

Строки легче читать с помощью Windows-1252, кодировать их в байты с помощью Windows-1252, декодировать их с помощью UTF-8,Пример в Python, поскольку он доступен для демонстрации:

>>> s = 'öé'
>>> s.encode('Windows-1252').decode('UTF-8')
'öé'

Обратите внимание, что Windows-1252 с потерями.Некоторые байты, используемые в UTF-8, не имеют определения в Windows-1252, поэтому возможно, что при записи в вашу базу данных они были отброшены.Также возможно, что использовался ISO-8859-1 (он же latin1), который близок к Windows-1252, но все байты определены.

...