1

IDLE で動作するスクリプトがありますが、cmd で同じスクリプトを実行すると動作しません。次に、次のエラーが表示されます。

File "C:\Python27\lib\encodings\cp850.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2013' in position 17: character maps 
to <undefined>

次の部分「 - 」を含む文字列を印刷しようとすると、エラーが発生します。スクリプトが IDLE で実行されると、すべてが完全に機能します。私は Windows 7 で Python 2.7 を使用しています。Windows スケジューラを使用してスクリプトをスケジュールしたいと思います。理解したとおり、スクリプトは cmd で実行されます。2 つの質問:

  1. スクリプトが実行される場所によって異なる結果が得られるのはなぜですか? また、それを修正するにはどうすればよいですか?
  2. 回避策として、「Python (コマンド ライン)」を起動して、Windows スケジューラからスクリプトを実行することはできますか?
4

1 に答える 1

1

Python(および他のほとんどの言語)のI / Oは、バイトに基づいています。バイト文字列(2.xではstr、3.xではbytes)をファイルに書き込む場合、バイトはそのまま書き込まれます。Unicode文字列(2.xではunicode、3.xではstr)をファイルに書き込む場合、データはバイトシーケンスにエンコードする必要があります。詳細については、文字列に関するPython3の章を参照してください。Unicode文字列を使用してこれを試してください。

例えば:

>>> print(u'\u2013')
–

一方:

>>> print("\u2013")
\u2013 
于 2012-11-18T00:02:15.290 に答える