- 締切済み
pythonの文字エンコーディングについて
pythonのデフォルトエンコーディングは asciiコードですよね? まず mod_wsgiモジュールを用いてapache上で実行したいと思っています。 そこで通常はマジックコメントで #cofing: utf-8 とかかなければ日本語などのマルチバイトは使用できませんよね? それを http://d.hatena.ne.jp/ama-ch/20080610/1213073848 上記ページを参考に import sys sys.setdefaultencofing("utf-8"); とかいて、やればれスクリプトを記述したファイルの冒頭で # coding: utf-8 のマジックコメントを書かなくてもよくなるのかなとおもったのですが そうはいきませんでした。 私のは考えはデフォルトの文字コードが utf-8なら マジックコメントを記述しなくても日本語があつかえるだろうと思っていたのですが・・・・。 上記ページを参考にしてデフォルトの文字コードをutf-8したにも関わらず スクリプトはマジックコメントを記入しなければ 日本語が表示されないのでしょうか? pythonのversionは2.7.2です。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- struct
- ベストアンサー率72% (32/44)
sys.setdefaultencodingは、str文字列とunicode文字列を混ぜたコードを 書いたときに使われる設定なので、 ソースコードの読み取りや日本語の出力にはまったく関係ないです。 http://wiki.python.org/moin/DefaultEncoding こいつは古いPythonコードを動かす時に使う設定なので、 通常は設定する必要ありません。 マジックコメントは、ソースコードの読み取り時に使う設定なので、 こいつも日本語の出力には関係ないです。 http://www.python.org/dev/peps/pep-0263/ リテラルやコメントにASCII以外の文字を使う場合は 必ずつけてください。 それから、No.1の回答への補足ですが、 標準入出力時に使うエンコーディングは OSの設定(LC_CTYPEとか)から読み取ります。 http://drj11.wordpress.com/2007/05/14/python-how-is-sysstdoutencoding-chosen/ sys.setdefaultencodingは関係ないです。
- kmee
- ベストアンサー率55% (1857/3366)
sys.setdefaultencofingは、入出力のデフォルトを決めるもので、スクリプト自体のコードを決めるものではありません。