ホームページ バックエンド開発 Python チュートリアル Pythonの文字エンコードを詳しく解説

Pythonの文字エンコードを詳しく解説

Jun 16, 2017 am 10:49 AM
python 文字コード

次のエディターは、Python の基本的な文字エンコーディングに関する記事をお届けします。編集者はこれが非常に良いものだと思ったので、皆さんの参考として今から共有します。エディターをフォローして一緒に見てみましょう

前書き

文字エンコーディングは非常に問題が発生しやすいので、次の点に注意してください:

1.どのエンコーディングを使用するかを指定します

2. プログラムの実行では、最初にファイルがメモリに読み込まれます

3. Unicode は親エンコーディングであり、他のエンコーディング形式にのみエンコードおよびデコードできます

- 8、GBK これらはサブ 8 エンコーディングであり、デコードのみ可能です Unicode にエンコードされます

1. 文字エンコーディングとは何ですか

コンピューターはバイナリのみを認識できることはわかっており、私たちが通常記述するコードは変換する必要がありますコンピュータが認識できるようにバイナリに変換します。では、作成した文字をバイナリに変換するにはどうすればよいでしょうか? このプロセスでは、実際には、作成した文字を特定の数値に 1 対 1 で対応させるための標準が使用されます。この標準は文字エンコーディングと呼ばれます。

文字-----(文字エンコーディング)------>数字

2. 文字エンコーディングの発展の歴史

1. ASCIIコード

米国では、文字エンコーディングも米国で生まれました。しかし、アメリカ人が使用する文字は 26 文字といくつかの特殊記号だけです。中国とは異なり、小学生は何千もの漢字を知っていなければなりません。そのため、アメリカ人は文字エンコードとして ASCII コード (American Standard Code for Information Interchange) を使用し、1 バイト = 8 ビットで 256 の異なる変更が可能ですが、最初は最初の 7 文字のみです。ビット、つまり 127 文字が使用されましたが、これはアメリカ人にとっては十分です (もちろんコスト上の理由から)。その後、ラテン語が 8 位にコンパイルされました。この時点で、ASCII コードは充実しており、英語圏とラテン語の国が楽しくプレイできます。

2.GBK

中国の現在の技術はアメリカ帝国ほどではありませんが、私たちは前向きな心を持っています。そのため、1980年に国家標準局は中国語で使用される文字コードを発行しました - -> GBK は漢字を表すのに 2 バイトを使用するため、2 の 16 乗、つまり 65536 通りの組み合わせがあり、これは漢字には十分です。

同時に、他の国でも、日本のshift_JIS、韓国のEuc-krなど、独自の文字エンコーディング標準がリリースされています。全盛期にはさまざまな文字エンコーディングがあり、相互にサポートしていないようですが、これでは世界の相互運用性が損なわれるため、Unicode が誕生しました。 1994 年、国際標準化機構はユニバーサル コードとして知られる Unicode をリリースしました。これは 2 バイトを使用して文字を表し、65,536 の組み合わせがあり、すでに世界中のほとんどの言語をカバーできます。

4.utf-8

Unicode は優れていますが、本来 1 バイトで表現できる英語が 2 バイト必要になり、ストレージ容量が 2 倍になるという問題があります。完璧なので、英語の文字には 1 バイト、中国語の文字には 3 バイトのみを使用する UTF-8 が作成されました。

5. Unicode の文字はすべて 2 バイトであり、文字から数値への変換は高速ですが、utf-8 では異なる文字を表すために多くの記憶領域が必要になります。スペースは節約できますが、変換効率は Unicode ほど速くありません メモリで使用される文字エンコーディングは Unicode なので、速度を確保するには少しスペースを犠牲にする必要があります

。ディスクおよびネットワーク送信では utf-8 を使用します。ディスク I/O またはネットワーク I/O 遅延が utf-8 の変換効率よりもはるかに大きいため、ネットワーク送信中に帯域幅をできるだけ節約する必要があります

3 つ。 Python インタープリターの実行

第 1 段階:

Python インタープリターが開始されると、テキスト エディターを開始するのと同じになります。第 2 段階: Python インタープリターは、t.py ファイルを開いて内容を読み取るテキスト エディターとして機能します。 t.py ファイルをハードディスクからメモリに読み込みます

第 3 段階: Python インタープリターは、メモリにロードされたばかりの t.py のコードを解釈して実行します

第 2 段階では、t.pyファイルには保存時の文字エンコーディングがあり、Python インタプリタでファイルを開くときに同じエンコーディング方式も指定する必要があります (Python2 のデフォルトのエンコーディング方式は ASCII、Python3 のデフォルトのエンコーディング方式は utf-8)ファイル保存のエンコード形式が Python インタープリターのデフォルトのエンコード方式と異なる場合は、ファイルの先頭に #coding: を記述して、Python インタープリターにデフォルトのエンコード方式を使用しないように指示する必要があります。ただし、ヘッダー ファイルで指定されたメソッドを使用してファイルを読み取るため、エラーは発生しません。

第 3 段階: メモリにロードされたコード (デフォルトでは Unicode) を読み取り、実行します。実行中に変数の定義などの操作が発生すると、メモリ内に新しいメモリ空間が開かれます。 。このとき、新しく開かれるメモリ空間は必ずしも Unicode である必要はないことに注意してください。変数を定義するときに、ユーザーはエンコーディング方法を指定できます。定義中に開かれるメモリ空間は単なる空間であり、任意のエンコーディング形式でコードを格納できます。 Python3を例に挙げます

4. エンコードとデコード

ファイルの保存とは、メモリ内のファイルをハードディスクに保存することです

ファイルの読み込みとは、ハードディスク内のファイルを読み取ることですメモリに

Unicode 親エンコーディング、utf-8、GBK、これらは子エンコーディングです。子コードを他のエンコーディングに変換したい場合は、まず親エンコーディングに変換してから、親エンコーディングに変換する必要があります。親のエンコーディングから他の子のエンコーディングに変換するのがデコーディング

親のエンコーディングになる過程がデコーディング

です。前に述べたように、ファイルがメモリに読み込まれると、Unicode エンコードになります (もちろん、これはデフォルトの状況であり、指示に従って変更することもできます)。ハードディスクからファイルを読み取るプロセスは、UTF をデコードすることです。ハードディスク内の8をUnicodeに変換します

ファイルを保存する際、メモリからハードディスクに保存する処理です。ハードディスクのエンコード方式はutf-8となっており、Unicodeでエンコードする必要があります。 utf -8

5. Python2とPython3の違い1. Python2のデフォルトのエンコーディングは、utf-8で保存されたファイルを開くと、#coding: utfが報告されます。 -8 をヘッダー ファイルに追加する必要があります。Python2 の

Str はバイトとして認識されるため、Python2 の str は、デフォルトで 1 つのことを実行します。それは、str の前に u を追加することです。 , まず Unicode に変換してからバイトにエンコードします

Python2 には str と Unicode の 2 つの文字列型があります。str は先頭に「u」を追加することで Unicode に変換できます

2。 3 は utf-8 で、直接開いて utf-8 で保存できます Python3 のファイル

str は Unicode として認識されます

Python3 にも 2 つの文字列型 (bytes と str) がありますが、bytes は bytes と str ですunicodeです

6. ターミナルに印刷します

まず、Windowsターミナルのデフォルトのエンコード方式はGBKであることを知っておく必要があります

ターミナルもアプリケーションでありメモリ内で実行されるため、printで印刷するプロセスは()は記憶から記憶へ。したがって、Unicode の場合、どのように出力してもエラーは発生しません。ただし、Python2 では、「u」を含む文字列を除いて、他の文字列はバイトになります。一方、Python2 では、指定された utf-8 またはデフォルトの Ascii コードである場合、ターミナルで印刷するときにエラーが発生します。

現時点での理解ですので、今後誤りや不明瞭な表現があれば修正していきます。ああ、文字エンコーディングには落とし穴があります

以上がPythonの文字エンコードを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語合計の機能は何ですか? C言語合計の機能は何ですか? Apr 03, 2025 pm 02:21 PM

C言語に組み込みの合計機能はないため、自分で書く必要があります。合計は、配列を通過して要素を蓄積することで達成できます。ループバージョン:合計は、ループとアレイの長さを使用して計算されます。ポインターバージョン:ポインターを使用してアレイ要素を指し示し、効率的な合計が自己概要ポインターを通じて達成されます。アレイバージョンを動的に割り当てます:[アレイ]を動的に割り当ててメモリを自分で管理し、メモリの漏れを防ぐために割り当てられたメモリが解放されます。

独特の目標は関連していますか? 独特の目標は関連していますか? Apr 03, 2025 pm 10:30 PM

明確で明確なものは区別に関連していますが、それらは異なる方法で使用されます。明確な(形容詞)は、物事自体の独自性を説明し、物事の違いを強調するために使用されます。明確な(動詞)は、区別の動作または能力を表し、差別プロセスを説明するために使用されます。プログラミングでは、個別は、重複排除操作などのコレクション内の要素の独自性を表すためによく使用されます。明確なは、奇数や偶数の偶数を区別するなど、アルゴリズムまたは関数の設計に反映されます。最適化する場合、異なる操作は適切なアルゴリズムとデータ構造を選択する必要がありますが、異なる操作は、論理効率の区別を最適化し、明確で読み取り可能なコードの書き込みに注意を払う必要があります。

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

Cで理解する方法!x? Cで理解する方法!x? Apr 03, 2025 pm 02:33 PM

!X理解!Xは、C言語の論理的な非操作者です。 Xの値をブーリングします。つまり、虚偽の真の変化、trueへの誤った変更です。ただし、Cの真実と虚偽はブール型ではなく数値で表されていることに注意してください。非ゼロは真であると見なされ、0のみが偽と見なされます。したがって、!xは正の数と同じ負の数を扱い、真実と見なされます。

c言語でsumとはどういう意味ですか? c言語でsumとはどういう意味ですか? Apr 03, 2025 pm 02:36 PM

Cには組み込みの合計関数はありませんが、次のように実装できます。ループを使用して要素を1つずつ蓄積します。ポインターを使用して、要素に1つずつアクセスして蓄積します。大量のデータ量については、並列計算を検討してください。

H5ページの生産には継続的なメンテナンスが必要ですか? H5ページの生産には継続的なメンテナンスが必要ですか? Apr 05, 2025 pm 11:27 PM

H5ページは、コードの脆弱性、ブラウザー互換性、パフォーマンスの最適化、セキュリティの更新、ユーザーエクスペリエンスの改善などの要因のため、継続的に維持する必要があります。効果的なメンテナンス方法には、完全なテストシステムの確立、バージョン制御ツールの使用、定期的にページのパフォーマンスの監視、ユーザーフィードバックの収集、メンテナンス計画の策定が含まれます。

ラブコードのコピーをコピーして貼り付けて無料でラブコードを貼り付けます ラブコードのコピーをコピーして貼り付けて無料でラブコードを貼り付けます Apr 04, 2025 am 06:48 AM

コードのコピーと貼り付けは不可能ではありませんが、注意して扱う必要があります。コード内の環境、ライブラリ、バージョンなどの依存関係は、現在のプロジェクトと一致しないため、エラーや予測不可能な結果が得られます。ファイルパス、従属ライブラリ、Pythonバージョンなど、コンテキストが一貫していることを確認してください。さらに、特定のライブラリのコードをコピーして貼り付けるときは、ライブラリとその依存関係をインストールする必要がある場合があります。一般的なエラーには、パスエラー、バージョンの競合、一貫性のないコードスタイルが含まれます。パフォーマンスの最適化は、コードの元の目的と制約に従って再設計またはリファクタリングする必要があります。コピーされたコードを理解してデバッグすることが重要であり、盲目的にコピーして貼り付けないでください。

58.com作業ページでリアルタイムアプリケーションと視聴者のデータを取得する方法は? 58.com作業ページでリアルタイムアプリケーションと視聴者のデータを取得する方法は? Apr 05, 2025 am 08:06 AM

クロール中に58.com作業ページの動的データを取得するにはどうすればよいですか? Crawlerツールを使用して58.comの作業ページをrawったら、これに遭遇する可能性があります...

See all articles