Python スクリプト中の最初の行か、二行目にあるコメントが正規表現 coding[=:]\s*([-\w.]+) にマッチする場合、コメントは エンコード宣言 (encoding declaration) として処理されます; 表現に対する最初のマッチグループがソースコードファイルのエンコードを 指定します。エンコード宣言式として推奨する形式は、GNU Emacs が 認識できる形式
# -*- coding: <encoding-name> -*-
または、Bram Moolenar による VIM が認識できる形式
# vim:fileencoding=<encoding-name>
です。さらに、ファイルの先頭のバイト列が UTF-8 バイトオーダ記号
('\xef\xbb\xbf'
) の場合、ファイルのエンコードは UTF-8
と宣言されているものとします (この機能は Microsoft の notepad
やその他のエディタでサポートされています)。
エンコードが宣言されている場合、Python はそのエンコード名を認識 できなければなりません。宣言されたエンコードは全ての字句解析、特に文字列の終端を検出する際や Unicode リテラルの内容を翻訳する上で用いられます。 文字列リテラルは文法的な解析を行うために Unicode に変換され、 解釈が行われる前に元のエンコードに戻されます。エンコード宣言は 宣言全体が一行に収まっていなければなりません。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。