私のウェブページは、一連のファイルを動的にインポートするスクリプトによって提供されています
try:
with open (filename, 'r') as f:
exec(f.read())
except IOError: pass
(実際、ファイルをインポートするためのより良い方法を提案できますか? きっとあると思います。)
ファイルには、次のような異なる言語の文字列が含まれている場合があります
# contents of language.ru
title = "Название"
それらはすべてUTF-8ファイルとして保存されました。Python では、コマンド ラインでスクリプトを実行したり、MacBook からページを提供したりすることに問題はありません。
OK: [サーバー コマンド ライン] python3.0 page.py /index.ru OK: http://whitebox.local/index.ru
しかし、移動したばかりのサーバーからページを提供しようとすると、エラーがスローされます。
157 試してみてください: 158 (ファイル名, 'r') を f: 159 exec(f.read()) 160 IOError 以外: パス 161 /usr/local/lib/python3.0/io.py in read(self=, n=-1) ... UnicodeDecodeError: 'ascii' コーデックは位置 627 のバイト 0xe1 をデコードできません: 序数が範囲内にありません (128)
すべてのファイルは私のラップトップからコピーされ、Apache によって完全に提供されていました。理由は何ですか?
更新:のデフォルトのエンコーディングopen()
がプラットフォームに依存することがわかったのでutf8
、ラップトップとascii
サーバーにありました。Python 3で設定するプログラムごとの関数があるのだろうか(モジュールsys.setdefaultencoding
で使用site
され、名前空間から削除されます)。