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

Hiroshi Miura(osmf) miurahr @ osmf.jp
2013年 11月 25日 (月) 16:27:30 PST


三浦です。windowsでは、過去の互換性のapiとpure unicodeのapiがあり、pythonでは、後者を実装すべきですが、そうなっていないようです。

また、提案の変更は、日本語の設定になっているwindowsに限られる変更で、その他の環境での動作を破壊すると思われるので、取り入れがたいと思います。

また、windowsは、sjisではなく、CP932です。

したがって、
言語判定とos判定して、windowsの場合だけ適切に世界中の言語ごとの処理を行うルーチンを作るか、windowsのunicode apiを使うべきです。
三浦

ASAHI Kosuke <asahi @ hcc.co.jp> wrote:
>赤木さん
>
>度々、詳細な解説をしていただき有難うございます。
>提示していただいた書き換えで実行できることを確認しました。
>
>少し整理して(出来なかったらそのまま。。)、不具合報告しておこうと思います。
>
>(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
>
>_______________________________________________
>OSGeoJapan-discuss mailing list
>OSGeoJapan-discuss @ lists.osgeo.org
>http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss

-- 
Sent from my Android phone with K-9 Mail. Please excuse my brevity.
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://lists.osgeo.org/pipermail/osgeojapan-discuss/attachments/20131126/bfb4ea44/attachment-0001.html>


More information about the OSGeoJapan-discuss mailing list