Назад | Перейти на главную страницу

Проблемы с набором символов при обновлении Postgres

Я перемещаю некоторые базы данных с Postgres 7.4.8 на 8.4.5 на CentOS 5. В старой базе данных используется кодировка UNICODE. Итак, я сделал текст pg_dump, создал свои новые базы данных следующим образом:

createdb --template template0 - кодирование unicode testdb

и импортировал данные:

psql testdb <testdb.dmp> и testdb.out

К сожалению, эти ошибки встречаются повсюду:

ОШИБКА: недопустимая последовательность байтов для кодировки «UTF8»: 0x8e

Я знаю, что iconv - это инструмент, который чаще всего рекомендуется исправить, но я не уверен, что такое преобразование. Я попытался запустить его из Unicode в UTF8, поскольку именно это сообщает Postgres для моей новой базы данных, но в результате был получен файл, полный того, что выглядело как китайские символы. Я также пробовал UTF8 в UTF8; который подавляется первым из оскорбляющих персонажей:

iconv: недопустимая последовательность ввода в позиции 874924

Я хотел бы знать: а) почему у меня возникают проблемы, когда я не меняю набор символов? И б) есть ли способ исправить это недостаток редактирования файла дампа вручную?

Спасибо!

Для потомков ... оказалось, что (я думаю) у меня было сочетание нескольких разных наборов символов в данных. В итоге я сначала запустил

iconv -f macintosh -t utf-8

Чтобы исправить акцентированные символы a и другие, которые вызывали проблемы при импорте, а затем выполнить ручной поиск и замену, чтобы избавиться от всех интеллектуальных символов Windows, которые были искажены вышеупомянутым преобразованием. После этого все было чисто импортировано в Postgres и выглядело нормально. Не лучшее решение, но единственное, что мне удалось выяснить, что сработало.