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

ASAHI Kosuke asahi @ hcc.co.jp
2013年 11月 19日 (火) 19:26:36 PST


赤木さん

度々、詳細な解説をしていただき有難うございます。
提示していただいた書き換えで実行できることを確認しました。

少し整理して(出来なかったらそのまま。。)、不具合報告しておこうと思います。

(2013/11/19 19:43), Minoru Akagi wrote:
> 朝日さん
>
> execfileに与えるファイルパスの文字コードについて調べてみました。
> まずデスクトップに次の内容の無題-0.pyというファイルを作成しました。
> print "Hello world!"
>
> 次にコマンドラインインタプリタとQGISのPythonコンソールでのテスト結果です。
>
> コマンドラインインタプリタでのテスト結果:
>
>>>> s = "C:/Users/username/Desktop/無題-0.py"
>>>> s
> 'C:/Users/username/Desktop/\x96\xb3\x91\xe8-0.py'
>>>> print s
> C:/Users/username/Desktop/無題-0.py
>>>> execfile(s)
> Hello world!
>
>>>> u = u"C:/Users/username/Desktop/無題-0.py"
>>>> u
> u'C:/Users/username/Desktop/\u7121\u984c-0.py'
>>>> print u
> C:/Users/username/Desktop/無題-0.py
>>>> execfile(u)
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordin
> al not in range(128)
>
>
> Pythonコンソールでのテスト結果:
>>>> s = "C:/Users/username/Desktop/無題-0.py"
>>>> s
> 'C:/Users/username/Desktop/\xe7\x84\xa1\xe9\xa1\x8c-0.py'
>>>> print s
> C:/Users/username/Desktop/無題-0.py
>
>>>> execfile(s)
> Traceback (most recent call last):
>    File "<input>", line 1, in <module>
> IOError: [Errno 2] No such file or directory:
> 'C:/Users/username/Desktop/\xe7\x84\xa1\xe9\xa1\x8c-0.py'
>
>>>> u = u"C:/Users/username/Desktop/無題-0.py"
>>>> u
> u'C:/Users/username/Desktop/\u7121\u984c-0.py'
>>>> print u
> C:/Users/username/Desktop/無題-0.py
>>>> u.encode("utf-8")
> 'C:/Users/username/Desktop/\xe7\x84\xa1\xe9\xa1\x8c-0.py'
>
>>>> execfile(u)
> Traceback (most recent call last):
>    File "<input>", line 1, in <module>
> UnicodeEncodeError: 'ascii' codec can't encode characters in position
> 24-25: ordinal not in range(128)
>
>>>> execfile(u.encode("sjis"))
> Hello world!
>
>
> 以上の結果をもとに朝日さんがご指摘の行を次のように書き換えてやれば私の環境では実行できるようになりましたが,この修正方法が最良かどうかはわかりません。
> - self.parent.pc.shell.runCommand(u"execfile(r'{0}')".format(filename))
> + self.parent.pc.shell.runCommand(u"execfile(u'{0}'.encode('sjis'))".format(filename.replace("\\",
> "/")))
>
> ご参考になれば幸いです。
>
> 赤木 実
>
>
> 2013年11月19日 18:00 ASAHI Kosuke <asahi @ hcc.co.jp>:
>> みなさん
>>
>> 朝日です。
>>
>> チケット上げる際に解決方法わかれば提示したいと思い、ご相談です。
>> たぶん、こんなところ使っている人はまずいないですし、日本語ファイル名使え
>> なくても問題は無いのですが…
>>
>> QGIS 2.0の
>>   メニューから「プラグイン」→「pythonコンソール」→横のアイコンから「エ
>> ディタの表示」
>> を選択します。
>> 出てきたエディタでpythonスクリプトを書いて、「スクリプトの実行」を選ぶ
>> と、pythonスクリプトを実行できます。
>> windowsの環境にて、スクリプトをファイル名に日本語を含めて保存すると、実
>> 行の際にエラーなってしまいます。日本語含まなければOKです。
>>
>> OSGeo4Wでインストールしたとすると、
>>   C:\OSGeo4W64\apps\qgis\python\console\console_editor.py
>>   https://github.com/qgis/QGIS/blob/master/python/console/console_editor.py
>> の584行目、
>>   self.parent.pc.shell.runCommand(u"execfile(r'{0}')".format(filename))
>> 辺りをいじれば直るのかと思ったのですが、うまく直せませんでした。
>>
>> もし、この辺いじれば直りそうとのアドバイスありましたら、歓迎致します。
>> よろしくお願いします。
>>
>> --
>> 北海道地図株式会社 研究開発課
>> 朝日 孝輔
>> mailto:asahi @ hcc.co.jp
>> Tel : 0166-62-4711
>>
>> _______________________________________________
>> OSGeoJapan-discuss mailing list
>> OSGeoJapan-discuss @ lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss


-- 
北海道地図株式会社 研究開発課
朝日 孝輔
mailto:asahi @ hcc.co.jp
Tel : 0166-62-4711



More information about the OSGeoJapan-discuss mailing list