Как вы определяете кодировку шейп-файла?

25

Есть ли способ определить кодировку, используемую для данного шейп-файла?

Мэтью Финлей
источник

Ответы:

9

Методом проб и ошибок. Попробуйте открыть файл .dbf в MS Excel или OpenOffice, используя другие настройки, пока не получите все правильно.

Посмотрите на этот пост для получения дополнительной информации: /programming/319095/how-do-i-determine-the-character-set-of-a-string

Pablo
источник
Если ничего не известно о кодировке, стоит сначала попробовать latin1 или UTF-8.
krlmlr
Я открыл .dbf в MS Excel, и символы отображаются нормально. Как я могу узнать, какая кодировка Excel использует / обнаруживает? Так что я могу установить его в QGIS ...
user3386170
12

У программ есть два способа определения набора символов для шейп-файла.

Андреас В. Бартельс
источник
+1 Эта ссылка на страницу формата файла dBase отличная. Однако, AFAIK, кодовые страницы никогда не включались в формат dBase III. Имеется ссылка на расширение формата FoxPro, которое предполагает, что не все файлы .dbf будут содержать информацию о кодовой странице (или, если они это сделают, это может быть результатом появления байтов мусора в свободной области заголовка). ). Но если вы сможете извлечь эту информацию, это все равно будет хорошим началом для поиска методом проб и ошибок. Кстати, добро пожаловать на наш сайт!
whuber
Некоторые библиотеки Python DBF могут читать кодовую страницу, если есть информация.
Пауло Скардин
5

fileУтилита способна угадать кодировку текстового файла. Используйте ogr2ogrдля преобразования, которое сохраняет исходную кодировку, если нет .cpgфайла :

ogr2ogr -f CSV file.csv file.dbf
file file.csv

Пример вывода:

file.csv: ISO-8859 text

Я проверил его с двумя наиболее частыми кодировками, UTF-8 и latin1. Работает из коробки в Ubuntu, не уверен насчет OS X. Я не знаю fileутилиты для Windows.

ПРИМЕЧАНИЕ . Как только появится соответствующий .cpgфайл, в котором указана кодировка, он ogr2ogrбудет принят, и выходные данные будут в формате UTF-8. Но если вывод CSV выглядит правильно, вы знаете, что информация в .cpgфайле точна.

krlmlr
источник