У меня есть устаревшая база данных postgres 8.4, из которой я извлекаю внешние адреса.Кодировка в базе данных - UTF-8, и большинство специальных символов выглядят нормально как обычные читаемые символы, например: Á, É, Í, Ó, Ü
Однако существуют тысячи записей, которые используют некоторую другую кодировку для этих символов, все ониначните с непечатаемого символа STX
и затем последовательности: 6#x
, за которой следуют 1 или 2 шестнадцатеричных символа.
Например: CUAUHT6#xc9;MOC
, который должен быть: CUAUHTÉMOC
Я пытался использовать онлайновые "декодеры", чтобы идентифицировать этот бред, но безуспешно.Тем не менее, я смог определить следующее на основе названий городов и ссылок на почтовые индексы:
existing should be
-------- ---------
6#xc1; Á
6#xc9; É
6#xcd; Í
6#xd3; Ó
6#xdc; Ü
6#xd; " " (space)
Данные, похоже, хранятся в базе данных следующим образом.Хотя по общему признанию, я новичок в postgres, поэтому мог упустить что-то довольно очевидное.
Если не найти и заменить все экземпляры, это идентифицируемая кодировка со стандартной функцией decode
?