この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 4124|答える: 1

ASCIIコード、ISO8859-1、Unicode、GBK、UTF-8の違い

[リンクをコピー]
掲載地 2022/12/11 14:01:58 | | |
なぜコーディングが必要なのですか?

コンピュータ内の最小の記憶装置はバイト(バイト)であり、バイトで表現できる文字数には制限があり、1バイト=8ビット、バイトは最大255文字しか表現できません。世界には多くの言語があり、バイトで表現できない文字も多様です。したがって、Javaのchar表現文字はこのコーディング問題を解決するために使われます。1つのcharは2バイトを占めるため、charと最小単位バイトの間で符号化しなければなりません。 逆はデコードです。

実際、エンコーディングとデコードは完成した翻訳プロセス(「翻訳」は理解しやすい)であり、さまざまなコーディング手法は辞書のようなものです。

1. ASCIIコード

正式名称はアメリカン・スタンダード・コード・フォー・インフォメーション・インターチェンジ(American Standard Code for Information Interchange)で、これは世界で最も一般的なシングルバイト符号化システムであり、主に現代の英語やその他の西ヨーロッパ言語の表示に使われています。

ASCIIコードは7ビットで表され、128文字までしか表せません。0~31はエンター、バックスペース、削除などの制御文字を表します。 32~126は印刷された文字をキーボードから入力でき、表示できることを意味します。

その中で、48~57は0から9までの10個のアラビア数字、65~90は大文字の英語26文字、97~122は小文字の英語26文字、残りは句読点や演算記号などで、詳細はASCII標準表を参照できます。

2、ISO-8859-1

このエンコーディングはASCIIエンコーディングの拡張ですが、依然としてシングルバイトのエンコーディングであり、合計256文字しか表現できません。

ASCIIは128文字しか表現できないため、表示を完全に表現することはできませんISO-8859-1はASCIIエンコーディングを拡張しますASCIIコードの上に、西ヨーロッパの言語であるギリシャ語、タイ語、アラビア語、ヘブライ語の対応するテキスト記号が追加され、ASCIIエンコーディングと後方互換性があります。

3、GB2312

GB2312の正式名称は「Information Technology Chinese Encoding Character Set」で、A1からF7までの2バイトエンコーディングで、A1からA9までが記号領域で合計682記号が含まれています。 B0-F7は漢字の領域で、6763個の漢字を含みます。

正式名称は「情報交換のための中国語文字集合」で、1980年に中国から公開され、主にコンピュータシステムにおける中国語文字処理に使用されています。 GB2312は主に6763文字の漢字と682文字の記号を含みます。

GB2312は中国語の大部分の使用をカバーしていますが、古代中国語のような特別な希少文字は扱えないため、GBKやGB18030のようなコードは後に登場しました。

4、GBK

GBKの正式名称は「中国文字内部コード拡張仕様」であり、GB2312を拡張したものとみられています。その符号化範囲は8140-FEFE(XX7Fを除去)、合計23940ビットのコードビットを持ち、21003文字の中国文字を表現可能で、符号化はGB2312と互換性があります

GBK(中国内部コード仕様)は1995年に制定されました。 主にGB2312を拡張し、さらにさらに漢字を追加し、合計21,003漢字を含んでいます。

GBKはGB2312エンコーディングと後方互換性があり、GB2312でエンコードされた中国語文字は通常GBKでデコードでき、乱れて見えませんが、GBKでエンコードされた中国語の文字は必ずしもGB2312でデコードされるわけではありません。

5、GB18030

GB18030正式名称は「漢字内部コード拡張仕様書」であり、2000年に公開され2001年に施行された最新の内部コード文字セットで、中国のほとんどの少数民族の言語文字を含み、7万文字以上を含んでいます。

主に1バイト、2バイト、4バイトの文字エンコーディングを使用し、GB2312やGBKと後方互換性がありますが、国内では必須の標準ですが、実際の生産ではほとんど使われず、最も多く使われているのはGBKとGB2312です。

6.UNICODE

言語がコンピュータ上で正常に表示されるために、各国と地域ごとに独自のコードがあり、コードが多すぎると誰もお互いのコードを知ることができません。この時、ISO組織はグローバルな文化、文字、シンボルをサポートするためにUNICODEコーディングという新しいコードを提案しました。 UNICODEが定式化された当時、コンピュータの容量はもはや問題ではなく、固定2バイトに設計され、すべての文字は16ビットで表され、英語の文字も以前は8ビットしか占有しなかったため、スペースの無駄が生じ、UNICODEは長い間普及・適用されませんでした。

7、UTF-16

UTF-16の登場は、世界中のすべての言語が互いに翻訳できる新しい超言語辞典を作るためのISOです。この辞書がどれほど複雑で巨大か想像できるでしょう。 UTF-16はUnicode変換形式を表すために2バイトを使用します(2バイトは16ビットなのでUTF-16)は固定長の表現方法であり、任意の文字を2バイトで表現できます。 これによりキャラクターの表現が非常に便利になります。 しかし、欠点もあります。つまり、文字の大部分は1バイトで表現できるのに、UTF-16は2バイトを使うため、ストレージ容量の無駄遣いになります。 もう一つのエンコード方法としてUTF-8があります。

UTF-16はUNICODEの特有実装であり、16は16ビット、UTF-16は元の文字列でUNICODE文字の格納方法を定義します。UTF-16は任意の文字を表すために2バイトを使用するため、操作文字列が非常に効率的です。これがJavaが文字をメモリに格納するフォーマットとしてUTF-16を使う重要な理由でもあります。

UTF-16はディスクとメモリ間の使用に適しており、文字やバイトの相互変換もより簡単かつ効率的になりますが、ネットワーク伝送には適さず、バイトストリームを損傷する恐れがあります。

8、UTF-8

UTF-8は可変長技術を採用しており、各エンコード領域は異なるコード長を持ち、異なる文字は1〜6バイトで構成されることがあります。

UTF-8の符号化ルールは以下の通りです:

1) 1バイトで最大ビットが0の場合、それは1文字のASCIIであることを意味します。 すべてのASCIIエンコーディングはすでにUTF-8であることがわかります

2) 1バイト(11から始まる)の場合、連続する1の数はこの文字のバイト数を示します。例えば、110xxxxxはダブルバイトのUTF-8文字の最初のバイトを示します

3) 1バイト(10から始まる)の場合は最初のバイトでないことを意味し、現在の文字の最初のバイトを得るために期待する必要があります。

UTF-16は非常に効率的ですが、UNICODEの最大の欠点でもあります。すべての1バイト文字が2バイトをカバーしなければならず、ストレージ容量が倍増するため、明らかにリソースを消費し、インターネットの急速な発展の現状には合いません。 したがってUTF-8は、UNICODEの可変長文字エンコーディングの実装であり、1~6バイトの固定長バイトを使ってUNICODE文字をエンコードできます。

UTF-8はASCII文字に対して1バイトのストレージを使用し、1文字が破損してもその後の文字には影響しません。そのため、UTF-8は従来のウェブ上に理想的であり、現在最も広く使われているエンコーディングの一つです。

中国語を表現したい場合、UTF-8の符号化効率はGBKより高く、UTF-16より低いため、GBK以外で最も理想的な符号化方法でもあります。




先の:Linuxでの過剰なメモリバフ/キャッシュ使用量
次に:アセットファイル「project.assets.json」は見つかりません。 NuGetパッケージ復元を実行してください...
掲載地 2022/12/30 14:43:17 |
UTF-8で理解しました
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com