FAQ シェープファイルや DBF ファイルが文字化けする

ナレッジ番号:2880 | 登録日:2023/05/29 | 更新日:2023/11/20

現象

シェープファイルや DBF ファイルをマップに追加すると、属性テーブルのフィールド名や属性値が正しく表示されないことがあります。

原因

シェープファイルの属性値を格納している DBF ファイルに、文字コードの指定がされていない場合、文字化けが発生します。

対処

以下どちらかの方法を行います。

デフォルトの文字コードを指定する

DBF ファイルに文字コードが指定されていない場合に、ArcGIS がどの文字コードを使って読み込みを行うか、レジストリの設定によって指定する方法です。
デフォルトの文字コードを変更するには「シェープファイル文字コード設定ユーティリティ」を使用します。

  1. シェープファイル文字コード設定ユーティリティ」をダウンロードし、ユーティリティを起動します。
  2. 現在設定されている文字コード(UTF-8 または Shift_JIS)を確認することができますので、文字化けしない方を選択して [OK] をクリックします
    日本国内で使われる多くのシェープファイルは、属性値の文字コードに Shift_JIS が使われています。

CPG ファイルを付与する

CPG(*.cpg)ファイルを作成し、DBF で使われている文字コードを明示的に指定する方法です。これにより、ArcGIS のデフォルトの動作は変更せずに作業を行った該当のファイルのみ、Shift_JIS として扱えます。

  1. 以下の CPG ファイルをダウンロードし、文字化けが起こるシェープファイル(DBF ファイル)と同じフォルダに格納します。
    CPG ファイル ダウンロード
  2. CPG ファイル名(sample.cpg)を、文字化けが起こるシェープファイル(DBF ファイル)と同じ名称に変更します。
    例:シェープファイル「abc.shp」をご利用の場合は「abc.cpg」というファイル名にします。

説明

ArcGIS 製品は、シェープファイルの属性情報を保存する DBF ファイルを扱う際、以下の情報を参照して文字コードを判定します(以下、番号順に優先されます)。

  1. DBF ファイルのヘッダー内に埋め込まれた「言語ドライバ ID」
    詳しくは「シェープファイルの技術情報」に記載があります。
  2. DBF ファイルに付随し、同じフォルダーに用意された CPG ファイルによる文字コード指定
  3. 上記 2 つによる指定が無い場合の文字コードを指定するレジストリ値
    HKEY_CURRENT_USER\Software\ESRI\Desktop10.x\Common\CodePage\dbfDefault ("10.x" はバージョンにより異なる)

さらに、上記いずれの設定も無い場合は、デフォルトの文字コードにて読み込みます。デフォルトの文字コードは、ArcGIS のバージョンによって異なります。

  • ArcGIS 10.2 以前:Shift_JIS
  • ArcGIS 10.2.1 以降:UTF-8
    • ArcGIS 10.2.1 :「Set Shapefile Default Code Page Patch」(※サポート終了に伴い、本プログラムは現在公開しておりません)をインストール後は Shift_JIS
    • ArcGIS 10.3~10.6:「国内対応パック」をインストール済みの場合は Shift_JIS
    • 10.6.1 以降:「国内対応パック」のインストール時、最後にシェープファイル文字コード設定ユーティリティが起動するため、その際に指定した文字コード

そのため、以下の条件すべてが揃った場合には、実際に使われている文字コードが Shift_JIS であっても UTF-8 として表示するために文字が化けてしまいます。

  1. DBF ファイルのヘッダー情報に「言語ドライバー ID」が設定されていない
  2. 文字コードを指定する CPG ファイルが存在しない
  3. デフォルトの文字コードを指定するレジストリ設定がされていない(あるいは UTF-8 になっている)
  4. Set Shapefile Default Code Page Patch がインストールされている(10.2.1 または 10.2.2 で)

「対処」で紹介した 2 つの方法は、上記条件の 2 番目もしくは 3 番目の条件を変えることで、DBF ファイルで使われている文字コードに適した表示を行うというものです。
上記条件の 1 番目の「言語ドライバー ID」の判定方法等、さらに詳しく知りたい方は「シェープファイル または dBASE ファイル の LDID (Language driver ID) と *.cpg ファイルを調べる」もご参照ください。

まとめ

ArcGIS 製品を用いてシェープファイルの属性情報や DBF テーブルの出力に Shift_JIS を使用した場合は、言語ドライバ ID が設定されます。UTF-8 を使用した場合は、対応する ID が存在しないため言語ドライバ ID は設定されません。ただし、CPG ファイルによって明示的に UTF-8 であることが指定されます。そのため、ArcGIS で作成したシェープファイルや DBF テーブルは、文字化けせずに表示できます。

しかし、ArcGIS 製品以外のソフトウェアによっては、言語ドライバー ID や CPG ファイルが設定・作成されない場合があります。そのようなシェープファイルや DBF ファイルにおいて [詳細] で示した条件が揃っていると、問題が生じます。

文字化けしてしまうシェープファイルや DBF ファイルを正しい状態にするには、前述の対応策どちらかを使い、まずは文字化けしていない状態を作ります。次にその状態で、何らかの編集、および上書き保存を行ってください。

シェープファイルの文字コードに関する注意点については「シェープファイルの文字コードに関する注意」もあわせてご参照ください。

関連する質問

メタデータ

カテゴリ

製品

バージョン