Сохраняет ли pg_dump все символы Unicode, когда файл .sql имеет формат ANSI?

я использую

pg_dump.exe -U postgres -f "file-name.sql" database-name

для резервного копирования баз данных в кодировке UTF-8 на PostgreSQL 8.4 и 9.5, хост Windows. Некоторые из них могут содержать иностранные символы, такие как китайский, тайский и т. Д., В столбцах «Символы».

Полученный файл .sql показывает кодировку ANSI при открытии в Notepad ++ (по умолчанию я НЕ применяю ANSI к открываемым файлам). Как узнать, всегда ли символы Unicode сохраняются в файле дампа? Следует ли вместо этого использовать файл резервной копии архива (объекта)?


person DrewsWiz    schedule 26.01.2018    source источник
comment
Вам больше не следует использовать Postgres 8.4. Обновите сейчас   -  person a_horse_with_no_name    schedule 27.01.2018


Ответы (1)


Цитата из руководства

По умолчанию дамп создается в кодировке базы данных.

Нет никакой разницы в текстовом файле в кодировке ANSI и UTF-8, если не используются расширенные символы. Возможно, в вашем дампе нет специальных символов, и поэтому редактор не идентифицирует его как UTF-8.

Если вы хотите получить дамп SQL в определенной кодировке, используйте параметр --encoding=encoding или переменную среды PGCLIENTENCODING.

person a_horse_with_no_name    schedule 26.01.2018
comment
Для спокойствия OP было бы неплохо упомянуть, что PostgreSQL выдает ошибку, если не может правильно преобразовать символ. - person Laurenz Albe; 27.01.2018
comment
Строка в БД - เรียน พี่ เจี๊ยบ ครับ. В файле ANSI .sql это представлено как ๠€ ภ£ ีภ¢ ภ™ พี่๠€ จี๊ภ¢ บ ภ„ภ£ ภ± บ. Я использовал -E UTF8, что в любом случае не имеет значения. Преобразование файла в кодировку UTF8 сохраняет правильные символы. Пытаюсь осмыслить все это ... - person DrewsWiz; 29.01.2018