Яке кодування символів використовується файлом DBF у shapefiles?


52

Яке кодування символів використовується dbf-файлом у shapefiles? Здається, це обробляється по-різному, виходячи з програми та локальних параметрів кодування машини. Яке кодування є "правильним" - вказане для формату?


Ви обов'язково повинні надати прапор відповіді alfonx. @underdark Без образи!
JJD

Відповіді:


60

Оригінальний стандарт DBF визначає використання ISO8859-1 та лише ISO8859-1. Отже, коли ви отримуєте Shapefile, який дійсно відповідає стандартам, він повинен бути ISO8859-1. Звичайно, це (дуже давнє) обмеження є не дуже корисним в наші дні.

ArcGIS і Geopublisher, AtlasStyler та Geoserver почали розширювати стандарт для визначення кодування. Для ArcGIS , наприклад, просто створіть .cpg файл (з тим самим базовим іменем, що й інші Shapefiles) і заповніть його ім'ям кодування.

наприклад, створіть myshape.cpg з текстовим редактором та вставте 5 символів "UTF-8" та збережіть його. Якщо потім відкрити Shapefile в ArcGIS, він зчитує текстовий вміст DBF у цьому наборі.

Геосервер: Геосервер WFS може експортувати будь-який шар WFS у вигляді блискавки Shapefile. Коли це зроблено, .cst файл міститься в zip, роблячи точно так само, як і .cpg файл.

Увага: Все це стосується лише даних, а не назв стовпців. Справді слід використовувати ASCII лише в назвах стовпців DBF, якщо ви бажаєте, щоб файл був відкритим для інших програм.

Підказка: Щоб змінити кодування DBF, відкрийте його за допомогою OpenOffice Calc .. виберіть SaveAs ... натисніть "Параметри фільтра" внизу ліворуч і натисніть зберегти. Потім можна визначити кодування для перетворення текстового вмісту в.


3
Чудовий пост! Світ був би кращим місцем, якби люди відправляли свої файли форм .cpg-файлами.
underdark

2
Чи є у вас посилання на те, що шафа ISO8559-1 є офіційною схемою? Знайдені нами специфікації DBF дуже короткі і не згадують про це.
Кріс

3
Якщо ви отримуєте, у General input/output errorвас, ймовірно , не встановлена ​​база . Проблема така ж, якщо ви використовуєте OpenOffice або LibreOffice.
JJD

2
+1 за підказкою OpenOffice / LibreOffice Calc. Там ви можете переконатися, що файл DBF передбачає кодування. Однак, як вказував JJD, також для Ubuntu вам слід встановити LibreOffice Base для відкриття файлів DBF у Calc.
Мар’ян

1
.cpgФайл повинен працювати нормально в QGIS, теж, як з libgdal 1.9. Іноді це навіть здається необхідним: ssrebelious.wordpress.com/2012/03/11/…
krlmlr

11

Я майже впевнений, що немає "правильного" кодування. Файл .dbf може бути в будь-якому кодуванні, і ви зможете відкрити Shapefile і правильно прочитати атрибути, якщо ви це знаєте.

Білий документ ESRI можна знайти тут: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

Зазвичай я очікую, що файл з форматом буде або UTF-8, або в локальній країні, що охоплюється (часто це кодування з латині).


7

Щоразу, коли я бачу запитання щодо кодування, я посилаю людей на цю статтю: http://www.joelonsoftware.com/articles/Unicode.html

Як говориться:

Немає сенсу мати рядок, не знаючи, яке кодування воно використовує. Ви більше не можете засунути голову в пісок і зробити вигляд, що "звичайний" текст - це ASCII.


Саме так! Повсякчас люди кажуть мені, що я надіслав їм файл у неправильному кодуванні лише тому, що редактор (більшість випадків np ++) припускає дикі здогадки. +1
unicoletti

3

Простий спосіб - конвертувати shp-файл у файл CSV. І використовуйте enca або iconv для виявлення кодування. Я спробував з файлами UTF8 та gb18030, і це працює.


+1 для відповіді як спосіб з'ясувати поточне кодування. Я думаю, що це питання шукало більше того, яким буде стандартне кодування, якщо воно є.
Отримайте просторовий

Цей пост також стосується питання про те, як виявити кодування: gis.stackexchange.com/questions/12218/…
toms
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.