私のWebページを動的にのPython 3は(実際には、あなたがファイルをインポートするのより良い方法を提案することができ
try:
with open (filename, 'r') as f:
exec(f.read())
except IOError: pass
でたくさんのファイルをインポートするスクリプトによって提供されている新しいサーバー上のUnicodeのファイルを読み取れません。
# contents of language.ru
title = "Название"
が、これらはすべてUTF-8のファイルとして保存されていたよう?私は1つがあると確信しています。)
時にはファイルは、異なる言語の文字列を持っています。 Pythonは何の問題コマンドラインでスクリプトを実行しているか、私のMacBookからページを提供する持っていない:
OK: [server command line] python3.0 page.py /index.ru OK: http://whitebox.local/index.ru
を私たちはちょうどに移動し、サーバーからページを提供しようとすると、エラーがスローされます。
157 try: 158 with open (filename, 'r') as f: 159 exec(f.read()) 160 except IOError: pass 161 /usr/local/lib/python3.0/io.py in read(self=, n=-1) ... UnicodeDecodeError: 'ascii' codec can't decode byte 0xe1 in position 627: ordinal not in range(128)
すべてのファイルは私のラップトップからコピーされていて、Apacheが完全にサービスしていました。理由は何ですか?
アップデート:私はそれが私のラップトップ、サーバー上ascii
にutf8
たのでopen()
のデフォルトエンコーディングはプラットフォームに依存しているが分かりました。私はPython 3でそれを設定するプログラムごとの関数があるのだろうかと思う(sys.setdefaultencoding
はsite
モジュールで使われていて、名前空間から削除されている)。
通常、インポートはファイルをインポートするために機能します。それはあなたのために動作しない任意の理由? –
[sys.getfilesystemencoding](https://docs.python.org/3/library/sys.html#sys.getfilesystemencoding)をご覧ください。 Linuxでは、ロケール変数 'LC_CTYPE'がファイル名の意味を定義し、Pythonでも同様に使用されているので、ロケール変数' LC_CTYPE'が正しい値であることを確認する必要があります。 'LC_CTYPE'は同じ名前の環境変数か、' LC_ALL'によって推論されます。 'locale'コマンドを実行すると、現在の値が表示されます。 – Bluehorn