FAQ
レジストリ操作で、作成するシェープファイルの文字コードを変更したい (10.2 以前)
ナレッジ番号:2669 | 登録日:2023/05/29 | 更新日:2024/11/21
概要
ArcGIS Desktop では、10.2 までのデフォルトの状態では、シェープファイルの属性テーブル(.dbf ファイル)の文字コードについて、Shift_JIS(CP932)である前提として動作します。また、ArcGIS にて新規にシェープファイルを作成したり、既存のジオデータベース等からシェープファイルへのエクスポートを行った際にも、属性テーブルの文字コードは Shift_JIS となります。
しかし、状況によっては Shift_JIS 以外の文字コードでシェープファイルを作成する必要があるかもしれません。そのような場合には、レジストリの編集を行うことで属性フィールドで使用される文字コードを指定することができます。
手順
下記の手順にはレジストリの変更が含まれます。実行する前にレジストリを含め、お使いのオペレーティング システムやファイルのバックアップをお勧めいたします。必要であれば、システム管理者にご相談ください。 ESRIジャパン株式会社では、レジストリの誤操作によって生じたいかなる不具合等につきましても、責任を負いかねますのでご了承ください。
- 設定を変更したい PC にて、レジストリ エディターを開きます。
- HKEY_CURRENT_USER\Software\ESRI\Desktop10.x を展開します(x はバージョンによって異なります)。
(9.3.1 以前の場合は HKEY_CURRENT_USER\Software\ESRI) - 「Desktop10.x (9.3.1 以前の場合は ESRI)」を右クリックし、[新規] → [キー] をクリックします。新しいキーの名前は「Common」とします。
- 作成した「Common」を右クリックし、[新規] → [キー] をクリックします。新しいキーの名前は「CodePage」とします。
- 作成した「CodePage」を右クリックし、[新規] → [文字列値] をクリックします。新しい値の名前は「dbfDefault」とします。
- 作成した「dbfDefault」をダブルクリックして値のデータに「UTF-8」と入力します。[OK] をクリックします。
上記の操作によって、ArcGIS Desktop にて作成するシェープファイルの属性データ(.dbf ファイル)は UTF-8 を用いて作成されるようになります。
Esri 製品以外のソフトウェアでは、UTF-8 などで作成したシェープファイルの属性データを正しく表示できない可能性があります。シェープファイルを意図せずに UTF-8 で作成してしまうことを避けるため、目的とする作業が終わったらデフォルトの状態に戻しておきましょう。
ArcGIS Desktop をデフォルトの状態(Shift_JIS のシェープファイルを作成する)に戻すには、上記手順にて作成したレジストリ キー「CodePage」の dbfDefault 文字列値に「oem」または「932」と設定します。
注意事項
Shift_JIS で作成されたシェープファイルから UTF-8 のシェープファイルを作成する際は、下記の点にご注意ください:
- TEXT フィールドの「長さ」について
シェープファイル(DBF ファイル)の TEXT フィールドにおける「長さ」は、該当フィールドに格納できる文字列のバイト数を示します。Shift_JIS と UTF-8 では、全角文字一文字に使用されるバイト数が異なります。Shift_JIS では 2 バイトで表される文字が、UTF-8 ではほとんどの場合 3 バイトとなるため、場合によっては元データに含まれている文字列の一部が欠落することがあります。
例えば「長さ」が 10 のフィールドに「神奈川県」という文字列が格納されている場合、Shift_JIS では 8 バイトなので問題ありません。しかし UTF-8 に変換すると 12 バイトとなり、「長さ」が足りなくなるために最後の一文字が切り落とされ、「神奈川」だけが格納されることになります。
さらに UTF-8 では、サロゲートペアを使用した文字など、一文字で 4 バイト以上が使用される場合もあります。元のフィールド定義にて十分な「長さ」が設定されていない場合には、あらかじめ十分な「長さ」を持ったフィールドを追加して内容をコピーしておくなど、考慮が必要です。
- フィールドの上限、1 レコードあたりのサイズ制限について
Shift-JIS → UTF-8 への変換の過程で文字列のバイト数が増えることに伴い、dBase 形式の制限である Text 型の最大サイズ(254 バイト)を超えてしまうかもしれません。また、そのような長い文字列フィールドを多数含むデータの場合、やはり dBase にて規定された 1 レコードあたりの最大サイズ(4,000 バイト)を超えてしまうかもしれません。
このようなケースに直面した場合の、万能な回避策はありません。属性の一部を別テーブルに切り出したり、あるいはジオデータベースの利用を検討するなど、個別に考慮が必要です。
関連情報
ArcGIS Desktop 10 ヘルプ: シェープファイル出力のジオプロセシングの検討事項
メタデータ
機能
種類
製品
バージョン