ホームページ » の仕方 » 英語の文字を他のアルファベットの文字よりも表現するために必要なバイト数が少ないのはなぜですか。

    英語の文字を他のアルファベットの文字よりも表現するために必要なバイト数が少ないのはなぜですか。

    私たちのほとんどはおそらくそれについて考えるのをやめたことがありませんが、アルファベット文字はそれらを表現するのにかかるバイト数においてすべて同じサイズではありません。しかし、それはなぜですか?本日のSuperUser Q&A投稿には、興味をそそられる読者の質問に対する答えがあります。.

    本日の質疑応答セッションは、コミュニティ主導のQ&A Webサイトのグループである、Stack Exchangeの下位区分であるSuperUserの好意により提供されます。.

    部分的なアスキーチャートのスクリーンショット.

    質問

    SuperUserの読者khajvahが、保存時に異なるアルファベットが異なるディスク容量を使用する理由を知りたいです。

    テキストファイルに 'a'を入れて保存すると、サイズは2バイトになります。しかし、「ա」(アルメニア語アルファベットの文字)のような文字を入れると、3バイトの大きさになります。.

    コンピュータ上のアルファベットの違いは何ですか?保存すると英語のスペースが狭くなるのはなぜですか?

    手紙は手紙ですね。そうでないかもしれない!このアルファベットの謎に対する答えは何ですか?

    答え

    SuperUserの貢献者であるDoktoro Reichardとernieが私たちに答えてくれます。最初に、Doktoro Reichard:

    主流のコンピュータで使用するために開発された最初の符号化方式の1つはASCIIです(情報交換用米国標準コード)標準。それはアメリカ合衆国で1960年代に開発されました.

    英語のアルファベットはラテン語のアルファベットの一部を使用しています(たとえば、英語にはアクセントのある単語はほとんどありません)。大文字と小文字を区別しないで、そのアルファベットに26個の個々の文字があります。また、英語のアルファベットをエンコードするふりをしているスキームには、個々の数字と句読点が必要です。.

    1960年代はまた、コンピュータに現在のようなメモリやディスク容量がなかった時代でした。 ASCIIは、すべてのアメリカのコンピュータにおける機能的なアルファベットの標準的な表現として開発されました。当時、すべてのASCII文字を8ビット(1バイト)長にするという決定は、当時の技術的な詳細のために行われました(ウィキペディアの記事では、穴あきテープは一度に8ビットを保持するという事実に言及しています)。実際、元のASCIIスキームは7ビットを使用して送信でき、8番目はパリティチェックに使用できます。その後の開発では、いくつかのアクセント付き、数学的、および終端文字を含むように元のASCIIスキームを拡張しました。.

    最近世界中でコンピュータの使用が増加しているため、さまざまな言語のコンピュータを利用する人が増えています。つまり、言語ごとに、他の方式とは別に新しいエンコード方式を開発する必要があり、異なる言語の端末から読み取った場合は競合します。.

    Unicodeは、可能性のあるすべての意味のある文字を単一の抽象文字セットにマージすることによって、さまざまな端末の存在に対する解決策として登場しました。.

    UTF-8は、Unicode文字セットをエンコードする1つの方法です。これは可変幅のエンコーディング(つまり、異なる文字は異なるサイズを持つことができます)であり、以前のASCIIスキームとの後方互換性のために設計されました。そのため、ASCII文字セットのサイズは1バイトのままですが、他の文字のサイズは2バイト以上です。 UTF-16は、Unicode文字セットをエンコードするもう1つの方法です。 UTF-8と比較して、文字は1つまたは2つの16ビットコード単位のセットとしてエンコードされます。.

    他のコメントで述べたように、 'a'文字は1バイトを占め、 'ա'は2バイトを占めます。これはUTF-8エンコーディングを意味します。元の質問の余分なバイトは、末尾に改行文字があるためです。.

    アーニーからの回答が続きます:

    1バイトは8ビットなので、最大256(2 ^ 8)個の異なる値を表すことができます。.

    これ以上の可能性を必要とする言語では、単純な1対1のマッピングは維持できないので、文字を格納するためにより多くのデータが必要です。.

    一般に、ほとんどのエンコーディングはASCII文字に最初の7ビット(128個の値)を使用します。それは8番目のビット、またはより多くの文字のための128より多くの値を残します。アクセント文字、アジア言語、キリル文字などを追加すると、すべての文字を保持するのに1バイトでは不十分な理由が簡単にわかります。.


    説明に追加するものがありますか?コメントで音を消す。他の技術に精通したStack Exchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッドをチェックしてください。.