[解決済み] なぜpythonではunicodeをstringで宣言するのですか?
質問
私はまだpythonを学んでいますが、疑問があります。
Python 2.6.xでは、私は通常、次のようにファイルのヘッダでエンコーディングを宣言します(次のように)。 PEP 0263 )
# -*- coding: utf-8 -*-
この後は、いつも通り文字列を書きます。
a = "A normal string without declared Unicode"
しかし、私がPythonプロジェクトのコードを見るたびに、エンコーディングはヘッダで宣言されていません。代わりに、このようにすべての文字列で宣言されています。
a = u"A string with declared Unicode"
何が違うの?これの目的は何ですか?Python 2.6.xではデフォルトでASCIIエンコーディングが設定されているのは知っていますが、ヘッダー宣言で上書きすることができるので、文字列宣言ごとに意味があるのでしょうか?
追記です。 ファイルエンコードと文字列エンコードを混同していたようです。説明ありがとうございます :)
どのように解決するのですか?
他の方がおっしゃっているように、この2つは別物です。
を指定した場合
# -*- coding: utf-8 -*-
を指定すると、Python に保存したソースファイルが
utf-8
. Python 2のデフォルトはASCIIです(Python 3は
utf-8
). これはインタープリタがファイル内の文字をどのように読み取るかに影響するだけです。
一般的に、エンコーディングが何であれ、高い Unicode 文字をファイルに埋め込むことは、おそらく最良のアイデアではありません。
文字列を宣言する際に
u
を前にして
のように
u'This is a string'
のように、これは Python コンパイラに文字列がバイトではなく Unicode であることを伝えます。 これはインタプリタによってほとんど透過的に処理されます。最も明らかな違いは、文字列にユニコード文字を埋め込むことができるようになったことです(つまり。
u'\u2665'
が合法になったことです)。 文字列の中に
from __future__ import unicode_literals
を使えば、デフォルトにすることができます。
これはPython 2にのみ適用されます。Python 3では、デフォルトはUnicodeであるため、Python 2のように
b
のように)前に
b'These are bytes'
のように、バイト列を宣言します)。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] バイトを文字列に変換する
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] Pythonで文字列を小文字にするには?
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ブロック文字を使用した端末のテキストプログレスバー【終了しました
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?