Какая кодировка символов используется файлом DBF в шейп-файлах?
52
Какая кодировка символов используется dbf-файлом в шейп-файлах? Кажется, он обрабатывается по-разному, в зависимости от программы и локальных настроек кодировки машины. Какая кодировка 'правильная' - указана для формата?
Вы должны обязательно предоставить флаг ответа alfonx. @underdark Без обид!
JJD
Ответы:
60
Исходный стандарт DBF определяет использование ISO8859-1 и только ISO8859-1. Таким образом, когда вы получаете Shapefile, который действительно соответствует стандартам, это должен быть ISO8859-1. Конечно, это (очень старое) ограничение в настоящее время неприменимо.
ArcGIS и Geopublisher, AtlasStyler и Geoserver начали расширять стандарт для определения кодировки. Например, для ArcGIS просто создайте файл .cpg (с тем же базовым именем, что и у других шейп-файлов) и заполните его именем кодировки.
например, создайте myshape.cpg с помощью texteditor, вставьте 5 символов «UTF-8» и сохраните его. Если вы затем откроете Shapefile в ArcGIS, он прочитает текстовое содержимое DBF в этой кодировке.
Geoserver: Geoserver WFS может экспортировать любой слой WFS в виде сжатого шейп-файла. Когда это сделано, файл .cst содержится в zip-файле, точно так же, как файл .cpg.
Внимание: все это относится только к данным, а не к именам столбцов. Вы действительно должны использовать ASCII только в именах столбцов DBF, если вы хотите, чтобы файл можно было открывать в других программах.
Подсказка: чтобы изменить кодировку DBF, откройте его с помощью OpenOffice Calc .. выберите SaveAs ... нажмите "Параметры фильтра" в левом нижнем углу и нажмите "Сохранить". Затем вы можете определить кодировку для преобразования текстового содержимого в.
Отличный пост! Мир был бы лучше, если бы люди отправляли свои шейп-файлы с файлами .cpg.
Подземье
2
У вас есть ссылка на официальный набор символов ISO8559-1? Спецификации DBF, которые я нашел, очень короткие и не упоминают об этом.
Крис
3
Если вы получили General input/output error, вероятно, у вас не установлена база . Проблема одна и та же, используете ли вы OpenOffice или LibreOffice.
JJD
2
+1 за подсказку OpenOffice / LibreOffice Calc. Там вы можете убедиться, что файл DBF имеет предполагаемую кодировку. Однако, как указал JJD, также в Ubuntu у вас должна быть установлена библиотека LibreOffice Base для открытия файлов DBF в Calc.
Я уверен, что нет «правильного» кодирования. Файл .dbf может быть в любой кодировке, и вы сможете открыть Shapefile и правильно прочитать атрибуты, если вы его знаете.
Не имеет смысла иметь строку, не зная, какую кодировку она использует. Вы больше не можете засовывать голову в песок и делать вид, что «простой» текст - это ASCII.
Именно так! Все время случается так, что люди говорят мне, что я отправил им файл в неправильной кодировке только потому, что редактор (чаще всего np ++) принимает дикие догадки. +1
unicoletti
3
Простой способ - конвертировать файл shp в файл csv. И используйте enca или iconv для определения кодировки. Я попробовал с файлами UTF8 и gb18030, и это работает.
Ответы:
Исходный стандарт DBF определяет использование ISO8859-1 и только ISO8859-1. Таким образом, когда вы получаете Shapefile, который действительно соответствует стандартам, это должен быть ISO8859-1. Конечно, это (очень старое) ограничение в настоящее время неприменимо.
ArcGIS и Geopublisher, AtlasStyler и Geoserver начали расширять стандарт для определения кодировки. Например, для ArcGIS просто создайте файл .cpg (с тем же базовым именем, что и у других шейп-файлов) и заполните его именем кодировки.
например, создайте myshape.cpg с помощью texteditor, вставьте 5 символов «UTF-8» и сохраните его. Если вы затем откроете Shapefile в ArcGIS, он прочитает текстовое содержимое DBF в этой кодировке.
Geoserver: Geoserver WFS может экспортировать любой слой WFS в виде сжатого шейп-файла. Когда это сделано, файл .cst содержится в zip-файле, точно так же, как файл .cpg.
Внимание: все это относится только к данным, а не к именам столбцов. Вы действительно должны использовать ASCII только в именах столбцов DBF, если вы хотите, чтобы файл можно было открывать в других программах.
Подсказка: чтобы изменить кодировку DBF, откройте его с помощью OpenOffice Calc .. выберите SaveAs ... нажмите "Параметры фильтра" в левом нижнем углу и нажмите "Сохранить". Затем вы можете определить кодировку для преобразования текстового содержимого в.
источник
General input/output error
, вероятно, у вас не установлена база . Проблема одна и та же, используете ли вы OpenOffice или LibreOffice..cpg
Файл должен работать штраф в QGIS, тоже, как из libgdal 1.9. Иногда это даже кажется необходимым: ssrebelious.wordpress.com/2012/03/11/…Я уверен, что нет «правильного» кодирования. Файл .dbf может быть в любой кодировке, и вы сможете открыть Shapefile и правильно прочитать атрибуты, если вы его знаете.
Вы можете найти официальный документ ESRI здесь: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
Я обычно ожидаю, что шейп-файл будет либо UTF-8, либо локальным в покрытой стране (часто с некоторым латинским кодированием).
источник
Каждый раз, когда я вижу вопрос о кодировке, я отсылаю людей к этой статье: http://www.joelonsoftware.com/articles/Unicode.html
Как говорится:
источник
Простой способ - конвертировать файл shp в файл csv. И используйте enca или iconv для определения кодировки. Я попробовал с файлами UTF8 и gb18030, и это работает.
источник