多数の Shapefile のエンコーディングを shift-jis に統一方法

2,270 views
Skip to first unread message

TJ

unread,
Sep 15, 2016, 1:05:34 AM9/15/16
to FMEユーザーフォーラム
FME 2016.1.1.0

多数の Shapefile があります。
エンコーディングが utf-8 と shift-jis の Shapefile が混在しています。

エンコーディング utf-8 の Shapefile が コードページのファイル(.cpg)が付いていないので、そのまま ArcMap で表示すると、文字化けになってしまいます。全ての Shapefile のエンコーディングを utf-8 に統一したいです。

utf-8 の Shapefile について、以下の処理で shift-jis の Shapefile に変換されることが確認できました。
Shape リーダ(Character Encoding:utf-8) ⇒  Shape ライター(Character Encoding:utf-8)

但し、どの Shapefile が utf-8 か、どの Shapefile が shift-jis かの判定はうまくいきませんでした。
Tester の条件に [文字化けの属性値 Encodable in] を utf-8 と shift-jis のどちらに指定しても Passed ポートに出力されます。

一括でShapefile のエンコーディングを shift-jis に統一方法があれば教えていただきたいです。

Takashi Iijima

unread,
Sep 15, 2016, 3:55:30 AM9/15/16
to FMEユーザーフォーラム
【まえおき】
現在のFMEでは、UTF-8 Shapefile を読み込んだとき、属性名中の日本語文字が文字化けします。
また、属性名に日本語文字が含まれるデータをFMEによって UTF-8 Shapefile で出力したとき、ArcGIS 等で開いたときに、属性名中の日本語文字が文字化けします。

この件について以前、Safe社に確認したところ、Shapefileの属性ファイルとして使用されているdBASEフォーマットの本来の仕様では、フィールド名はシステムのエンコーディングで記述することになっており、FMEはそれに従い、エンコーディングの設定いかんに関わらず属性名はシステムのエンコーディング(日本語版WindowsならShift_JIS)で処理するとのことでした。
しかし、現実には、ArcGISをはじめとして Shapefile を使用するアプリケーションでは、属性名も含めて指定されたエンコーディングで記述されていることを前提としているようです。
そのため、Safe社には、Shapefileを使用するアプリケーションの仕様にあわせて、属性名も指定したエンコーディングで読み書きするように改良することを要望しています。
現時点では、属性名に日本語文字が含まれる場合には、Shift_JIS のみのサポートとなります(Windowsの場合)。

以上、「まえおき」ですが、UTF-8 Shapefile から Shift_JIS の Shapefile に変換できた(問題ない)ということは、属性名には日本語文字が含まれていないのですね。

> Tester の条件に [文字化けの属性値 Encodable in] を utf-8 と shift-jis のどちらに指定しても Passed ポートに出力されます。

文字化け後の文字も、文字コード(数値)としては UTF-8、Shift_JIS のどちらでも妥当な値なので、Passed ポートに出力されるのだと思います。
少し試してみましたが、ワークスペース内で、元の属性データがUTF-8、Shift_JISのどちらで作成されたか正確に判定するのは難しいかも知れません。
Pythonスクリプトの利用も含めて、もう少し考えてみますね。

TJ

unread,
Sep 15, 2016, 5:14:50 AM9/15/16
to FMEユーザーフォーラム
そういう経緯があったわけですね。ArcGIS の 10.2.1 以降、バッチ入れない限り、デフォルトの文字コードは UTF-8 になっているため、無意識で UTF-8 の Shapefile を作成してしまう可能性が高い。是非 FME もそれに合わせて改良していただきたいです。


>以上、「まえおき」ですが、UTF-8 Shapefile から Shift_JIS の Shapefile に変換できた(問題ない)ということは、属性名には日本語文字が含まれていないのですね。
はい、今回の Shapefile は全て英数字の属性名です。

試してみたところ、UTF-8 の cpg ファイルを付けば、 ArcMap では UTF-8 と Shift_JIS の Shapefile 両方文字化けなく属性値表示できました。Shift-JIS の場合、自動的に cpg ファイルを使わないようになっているのかもしれません。一時的な対策として全ての Shapefile に同名の cpg ファイルを付けることにしました。

他の方法が分かりましたら、また教えてください。
Reply all
Reply to author
Forward
0 new messages