[OSGeoJapan-discuss] QGIS・pythonコンソール・エディタでの日本語ファイル名

Minoru Akagi akaginch @ gmail.com
2013年 11月 25日 (月) 21:26:07 PST


2013年11月26日 12:54 Hiroshi Miura(@osmf) <miurahr @ osmf.jp>:
> 三浦です。
>
> http://stackoverflow.com/questions/5855550/pythonencoding-and-execfile
> 2011年に同様の問題への回答が出ていました。
>
> import sys
> fsenc = sys.getfilesystemencoding()
> execfile(afile.encode(fsenc))
>
>
> とすべきという事なので、
> + fsenc = sys.getfilesystemencoding()
>
> - self.parent.pc.shell.runCommand(u"execfile(r'{0}')".format(filename))
> +
> self.parent.pc.shell.runCommand(u"execfile(u'{0}'.encode(fsenc))".format(filename.replace("\\",
> "/")))
>
> とすると、どうでしょうか。
>
> これならば、韓国語、中国語の環境でも動作スルことが期待されます。

そうですね,sys.getfilesystemencoding()を使うべきでした。ご指摘ありがとうございます。
ただ上のコードだとPythonコンソールで定義されていない名前のfsencを参照することになりエラーになりますので,encode()の引数については文字列フォーマットを使って置き換えるようにすれば期待の動作になると思います。

- self.parent.pc.shell.runCommand(u"execfile(r'{0}')".format(filename))
+ self.parent.pc.shell.runCommand(u"execfile(u'{0}'.encode('{1}'))".format(filename.replace("\\",
"/"), sys.getfilesystemencoding()))

赤木 実


More information about the OSGeoJapan-discuss mailing list