30

ダウンロードしたコードの一部のソース ファイルには、次のヘッダーがあります。

# -*- coding: utf-8 -*-

私は utf-8 エンコーディングが何であるかを知っていますが、なぜそれが Python ソース ファイルのヘッダーとして必要なのですか?

4

5 に答える 5

14

次のように、ASCII以外の文字をコードで使用する必要がある場合は常に次のようになります。

ă 

通訳は彼がその文字を理解していないと不平を言うでしょう。

通常、これは定数を定義するときに発生します。

例:x.pyに追加

print 'ă'

次に、Pythonコンソールを起動します

import x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "x.py", line 1
 SyntaxError: Non-ASCII character '\xc4' in file x.py on line 1, 
   but no encoding declared;
   see http://www.python.org/peps/pep-0263.html for details
于 2012-12-10T19:30:41.020 に答える
7

常に UTF-8 を使用し、エディターも UTF-8 を使用していることを確認してください。Python 27 を使用している場合は、次のように Python スクリプトを開始します。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

これは、Python と UTF-8 に関する Nick Johnson による優れたブログ投稿です。

http://blog.notdot.net/2010/07/Getting-unicode-right-in-Python ところで、この投稿は彼が使用できるようになる前に書かれたものです。

from __future__ import unicode_literals
于 2012-12-10T20:38:00.327 に答える
3

ASCII 以外の文字を使用する場合。たとえば、ソースをノルウェー語でコメントすると、文字 ØÆÅ が .py で発生すると、エラーが発生し、「コンパイル」されません。

于 2012-12-10T19:32:53.893 に答える
2

テキストが読み書きされるときはいつでも、エンコーディングが機能します。いつも。Pythonインタープリターは、ファイルを理解するために、ファイルをテキストとして読み取る必要があります。エンコーディングを処理せずに回避できる唯一の状況は、ASCII範囲の文字のみを使用する場合です。この場合、インタプリタは世界中のほぼすべてのエンコーディングを使用でき、ほとんどすべてのエンコーディングがこれらの文字を同じバイトにエンコードするため、正しく処理できます。

ファイルにASCII以外の文字が含まれているという理由だけで使用しないcoding: utf-8でください。有害な場合もあります。これは、ファイルがどのエンコーディングであるかをPythonインタプリタに伝えるためのヒントです。テキストエディタを設定していない限り、テキストエディタはファイルをutf-8に保存しない可能性があります。だから今あなたがPythonインタープリターに与えたヒントは間違っています。

したがって、ファイルがutf-8でエンコードされている場合に使用する必要があります。Windows-1252でエンコードされている場合は、などを使用する必要がcoding: windows-1252あります。

于 2012-12-10T19:41:43.387 に答える