FAQ シェープファイルの文字コードに関する注意

ナレッジ番号:2805 | 登録日:2023/05/29 | 更新日:2024/04/04

シェープファイル作成時の文字コードの変更について

ArcGIS 10.2.1 から、シェープファイルの作成・出力時のデフォルトの文字コードが UTF-8 に変更されました。これにより、ArcGIS 10.2.1 以降で新たに作成、出力されたシェープファイルの属性(.dbf ファイル)のデータは、UTF-8 でエンコードされて保存されます。
バージョンによるシェープファイルのデフォルトの文字コードの違いを整理すると以下のとおりです。

ArcGIS 10.2 以前 ⇒ OS の言語環境に依存した文字コード(Windows OS の日本語版 においては Shift_JIS)
ArcGIS 10.2.1 以降、ArcGIS Pro ⇒ UTF-8(ArcGIS 10.3 以降で国内対応パックをインストール済みの場合は Shift_JIS)

この仕様変更は、言語環境に依存せずにシェープファイルを共用できるようにすることを考慮した上での対応ですが、ご利用にあたって後述する制限がありますので、ArcGIS 10.2 までと同様に Shift_JIS の文字コードでご利用になる場合は、次の対処方法を実施してください。

現在のシェープファイル作成時の文字コードの確認方法と設定方法

シェープファイル文字コード設定ユーティリティでは、ArcGIS Desktop ならびに ArcGIS Pro のシェープファイルの現在の文字コード設定を確認し、指定した文字コードに設定します。

  1. 以下のユーティリティをダウンロードします。
    シェープファイル文字コード設定ユーティリティ
  2. [すべてのプログラム] → [ArcGIS] から [シェープファイル文字コード設定ユーティリティ] を起動します。
  3. [対象アプリケーション] のドロップダウン リストからシェープファイルの文字コードを設定する対象アプリケーションを選択します。
  4. [現在の文字コード設定] から現在設定されているシェープファイルの文字コードを確認できます。
  5. 設定する文字コードをラジオボタンから選択し、[適用] ボタンをクリックし、レジストリ設定を変更します。

シェープファイル作成時の文字コードを Shift_JIS に変更する方法

日本においては、従来から利用されているシェープファイルは Shift_JIS の文字コードで作成されていることが多いため、 後述する現象がご利用の環境で発生する状況が多くあると予想されます。 Shift_JIS への設定方法は下記の方法を案内します。

ArcGIS Pro

シェープファイル文字コード設定ユーティリティをダウンロードして実行し、変更してください

ArcGIS Desktop

10.6.1 以降

国内対応パックのインストール時、最後にシェープファイル文字コード設定ユーティリティが起動し、UTF-8 から Shift_JIS に文字コードを変更することができます (自動では変更されません)。また、国内対応パックでは、シェープファイル文字コード設定ユーティリティがインストールされます。このユーティリティを利用することで、シェープファイル作成時の文字コードを確認・変更することができます。

10.4 - 10.6

国内対応パックをインストールすると、デフォルトの文字コードは Shift_JIS に変更され、シェープファイル文字コード設定ユーティリティがインストールされます。文字コード設定ユーティリティを利用することで、シェープファイル作成時の文字コードを確認・変更することができます。

10.3.x

ArcGIS 10.3 for Desktop から国内対応パックをインストールすることで、シェープファイル作成時のデフォルトの文字コードが Shift_JIS に変更されます。
国内対応パックをインストールしても、文字コードが Shift_JIS に変更されない場合は、 シェープファイル文字コード設定ユーティリティをご使用ください。

ArcGIS Engine

10.6.1 以降

シェープファイル作成時のデフォルトの文字コードを Shift_JIS に変更する場合は、 シェープファイル文字コード設定ユーティリティをご使用ください。

ArcGIS Server

10.6.1 以降

シェープファイル作成時のデフォルトの文字コードを Shift_JIS に変更する場合は、 シェープファイル文字コード設定ユーティリティをご使用ください。

シェープファイル作成時の文字コードを UTF-8 で利用する場合の注意点

Shift_JIS と UTF-8 では、日本語などのマルチバイト文字の表現に要するバイト数が異なる(Shift_JIS が 2 バイト、UTF-8 が 3 バイト)ため、シェープファイルの属性(.dbf ファイル)データに関する制限も以下のような違いがあります。

属性のフィールド名に定義できる最大日本語文字数(バイト数:10)
  Shift_JIS の場合:5 文字
  UTF-8 の場合:3 文字

Text 型の属性フィールドに格納できる最大日本語文字数(バイト数:254)
  Shift_JIS の場合:127 文字
  UTF-8 の場合:84 文字

このような文字コードによる違いがあるため、日本語を含む属性フィールド名や属性値を持つ Shift_JIS のシェープファイルを読込んで、UTF-8 のシェープファイルとして出力するような処理を行うと、文字列の格納に必要なバイト数が増え、その上限を超える場合は属性フィールド名や属性値が途中で切り捨てられる現象が発生します。
具体的には、シェープファイルの作成時の文字コードが UTF-8 の環境で以下のような処理を行う場合です。

・シェープファイル(文字コード:Shift_JIS)を ArcMap に追加後、別のシェープファイルにエクスポートする。
・シェープファイル(文字コード:Shift_JIS)を入力データに指定してジオプロセシング ツール(クリップ、インターセクト など)を実行し、シェープファイルを出力する。

例えば入力シェープファイル(文字コード:Shift_JIS)の属性フィールド名が 5 文字の「都道府県名」の場合、出力シェープファイルの文字コードは UTF-8 となるため、3 文字の「都道府」になります(4 文字目以降が切り捨てられる)。

属性フィールド名が切り捨てられるのは、フィールド名が以下の条件に当てはまる場合です。

  日本語を4文字以上含む(例:市区町村 ⇒ 市区町)
  日本語を3文字含み長さの総計が 8バイト以上(例:世帯数H1 ⇒ 世帯数H)
  日本語を2文字含み長さの総計が 9バイト以上(例:人口_2013 ⇒ 人口_201)
  日本語を1文字含み長さの総計が 10バイト(例:男_30_39_H ⇒ 男_30_39_)

属性値については、Text 型のフィールドに定義されている長さ(バイト数)によって異なりますが、日本語文字を含む文字列が総計で定義されたバイト数を超える場合は、それ以降の文字列が切り捨てられます。

フィールド名が切り捨てられる属性フィールドについては、属性値自体も欠落する現象が発生しますが、上述のパッチ(ArcGIS-102x-<製品名>-SSDCP-Patch.msp)を適用することで回避できます。ただし、入力シェープファイルのフィールド名の 3 文字目までの文字列が同じ属性フィールドが複数ある場合(例:「人口数男性」、「人口数女性」)、出力シェープファイルの属性フィールドは、「人口数」、「人口数_」となり、2 番目以降の属性フィールドの値が欠落する現象が発生します。

シェープファイル作成時の文字コードの設定を UTF-8 のままご利用になる場合は、これらの現象が発生することをご理解の上、十分ご注意願います。

※ 入力データの形式がジオデータベースのフィーチャクラスからシェープファイルへ出力する場合も同様の現象が発生します。
※ 出力データの形式がジオデータベースの場合はこれらの現象は発生しません。

既存のシェープファイルの文字コードを確認する方法

シェープファイルの文字コードに関する情報は、シェープファイルの dBASE ファイル(.dbf)のヘッダーか、.cpg ファイルに記録されます。Windows 日本語環境の ArcGIS で作成されたシェープファイルの場合、UTF-8 と Shift_JIS では以下のような違いがあります。

UTF-8 の場合

シェープファイル(.shp, .dbf, shx)と同じフォルダに 「.cpg」という拡張子が付いた同名のファイルが作成されます。ファイルはテキスト形式で「UTF-8」という文字列が記載されます。

Shift_JIS の場合

「.cpg」という拡張子が付いたファイルは作成されません。

関連する質問

メタデータ

カテゴリ

製品

バージョン