QGIS 1.8 の SHAPE ファイルの読み込み時の文字化けについて

国土数値情報で公開されている SHAPE ファイル等、日本語の属性情報をもつ SHAPE ファイルを QGIS に読み込むときには、SHAPE ファイルのエンコーディングに合わせたエンコーディングを指定する必要があります。国土数値情報の場合は、Shift_JIS を指定すればよいです(Shift_JIS、SJIS 以外を指定すると文字化けした、はず)。

ところが、無事に読み込みに成功しても、別の SHAPE ファイルに保存したりすると、保存先の SHAPE ファイルが文字化けしてしまうことがあります。というか、「読み込みに成功してるのに何で???」とずっと思っていました。

が、同じ悩みを抱えている人が他にもおられたようで、解決策がありました。qgis に環境変数として SHAPE_ENCODING="" を指定する、という方法です。これを指定すると、ベクタレイヤーを別 SHAPEFILE に保存したりする際に文字化けすることがなくなりました(自分は保存時には UTF-8 を指定するようにしています)。

#
# QGIS 1.8 では Shapefile 読み書き時に文字コード変換が変にかかってしまうので、
# 環境変数 SHAPE_ENCODING を空白にして、QGIS システム内では文字コード変換を
# させずに、ダイアログにて明示的に指定する。
#
 
bash$ export SHAPE_ENCODING=""
bash$ open -a qgis

Python のバージョンによる問題

ところが問題はこれだけではありませんでした。今度は QGIS 起動時にエラーダイアログが出ます。

# メッセージはこんな感じ
Couldn't load plugin fTools due an error when calling its classFactory() method...

SHAPE_ENCODING を指定した時に限り必ず表示されるようになってしまいました。

これはどうも python のバージョンによる問題のようです。 ここ に類似のエラーがあったので参考にしました。自分の環境には MacPorts の python と OSX(10.7) 標準の python が入っております。

# MacPorts python
bash$ python --version
Python 2.7.5
bash$ /usr/bin/python
Python 2.7.1
bash$

正確にはインストールされているライブラリ等の差異だと思うのですが、qgis が使用する python を /usr/bin/python になるよう、/usr/bin のパスを前に来るように指定すると、エラーダイアログが出なくなりました。

# 自分の自宅環境(OSX Lion) だと上記で動かなかった。MacPorts の python (2.7.3) だとダメで
# /usr/bin/python (2.7.1) だと動く。なので、PATH 環境変数にも依存...。
# 結局、最終的には、
 
bash$ export SHAPE_ENCODING=""
bash$ PATH=/usr/bin:$PATH
bash$ open -a qgis

Python 詳しくないし、原因を真面目に探して修正しだしたりしたらキリがないので、とりあえずはこれでしばらく運用してみます。

comments powered by Disqus