シェープファイルのDBFファイルで使用される文字エンコーディングはどれですか?


52

シェープファイルのdbfファイルで使用される文字エンコードはどれですか?プログラムとマシンのローカルエンコーディング設定に基づいて、異なる方法で処理されているようです。どのエンコーディングが「正しい」-形式に指定されていますか?


あなたは間違いなくalfonxに答えフラグを与えるべきです。@underdark違反なし!
JJD

回答:


60

元のDBF標準では、ISO8859-1を使用するように定義されており、ISO8859-1のみを使用しています。したがって、実際に標準に準拠しているShapefileを取得するときは、ISO8859-1である必要があります。もちろん、この(非常に古い)制限は、今日では実際には使用できません。

ArcGISおよびGeopublisher、AtlasStylerおよびGeoserverは、エンコーディングを定義するために標準を拡張し始めました。以下のためのArcGIS、例えば、ちょうど(他のシェープファイルと同じベース名を持つ).cpgファイルを作成し、エンコーディングの名前でそれを埋めます。

たとえば、テキストエディタでmyshape.cpgを作成し、5文字の「UTF-8」を挿入して保存します。その後、ArcGISでShapefileを開くと、その文字セットのDBFのテキストコンテンツが読み込まれます。

Geoserver:Geoserver WFSは、WFSレイヤーを圧縮されたシェープファイルとしてエクスポートできます。これが完了すると、.cstファイルがzipに含まれ、.cpgファイルとまったく同じように実行されます。

重要:これはすべて、列名ではなくデータにのみ適用されます。ファイルを他のプログラムで開くことができるようにする場合は、DBFの列名にASCIIのみを使用する必要があります。

ヒント:DBFのエンコーディングを変更するには、OpenOffice Calcで開きます。SaveAs...を選択します。左下の[フィルターオプション]をクリックし、[保存]を押します。その後、エンコードを定義して、テキストコンテンツを変換できます。


3
素晴らしい投稿!人々が.cpgファイルでシェープファイルを出荷した場合、世界はより良い場所になるでしょう。
暗闇

2
ISO8559-1文字セットが公式の文字セットであるというリファレンスはありますか?私が見つけたDBFの仕様は非常に短く、言及していません。
クリス

3
を受け取ったGeneral input/output error場合は、おそらくBaseがインストールされていません。問題は、OpenOfficeを使用してもLibreOfficeを使用しても同じです。
JJD

2
OpenOffice / LibreOffice Calcヒントの+1。ここで、DBFファイルが想定されたエンコーディングを持っていることを確認できます。ただし、JJDが指摘したように、Ubuntuでも、CalcでDBFファイルを開くにはLibreOffice Baseをインストールする必要があります。
マリアン14年

1
.cpgファイルはlibgdal 1.9のように、あまりにも、QGISでの作業の罰金になっています。時にはそれも必要であると考えられる:ssrebelious.wordpress.com/2012/03/11/...
krlmlr

11

「正しい」エンコーディングは存在しないと確信しています。.dbfファイルは任意のエンコーディングで作成でき、シェープファイルを開いて、属性がわかっている場合は属性を正しく読み取ることができます。

ESRIホワイトペーパーは、http//www.esri.com/library/whitepapers/pdfs/shapefile.pdfにあります。

通常、シェープファイルはUTF-8であるか、対象国のローカル(多くの場合、ラテンエンコーディング)であると予想されます。


7

エンコードに関する質問がある場合は、次の記事を参照してください:http : //www.joelonsoftware.com/articles/Unicode.html

それが言うように:

使用するエンコードを知らずに文字列を使用することは意味がありません。砂に頭を突き刺して「プレーン」テキストをASCIIのふりをすることはできなくなりました。


まさに!エディター(ほとんどの場合、np ++)が突飛な推測をするからといって、間違ったエンコーディングでファイルを送信したと人々に言われることは常に起こります。+1
ユニコレッティ

3

簡単な方法は、shpファイルをcsvファイルに変換することです。また、encaまたはiconvを使用してエンコードを検出します。UTF8およびgb18030ファイルを試してみましたが、動作します。


現在のエンコーディングを把握する方法として、答えに+1。質問は、もしあれば標準エンコーディングがどうなるかをもっと探していたと思います。
Spatialを取得する

:この記事はまた、エンコードを検出する方法の問題に対処gis.stackexchange.com/questions/12218/...を
トムズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.