テキストファイルをメモ帳で英語以外のテキストとともに保存しようとすると、nicode、 nicode Big EndianおよびTF-8。これらの形式の違いは何ですか?
notが(古いOSバージョンまたはアプリとの)下位互換性を必要とし、notファイルサイズに注意してください。これらのフォーマットのどれが良いですか?
(テキストは他の言語に加えて、中国語や日本語などの言語であることができると仮定します。)
注:以下の回答とコメントから、メモ帳の専門用語では、UnicodeはUTF-16(リトルエンディアン)、UnicodeビッグエンディアンはUTF-16(ビッグエンディアン)、UTF-8はUTF -8。
ダンノ。のこぎりとハンマーのどちらが良いですか? :-)
記事には、目前の主題に少し関連性のある部分があります。
「それらすべてのゼロを見てください!」彼らはアメリカ人であり、U + 00FFを超えるコードポイントをほとんど使用しない英語のテキストを見ていたため、彼らは言った。また、彼らはカリフォルニアでリベラルなヒッピーでした。彼らがテキサス人であるならば、彼らはバイト数の2倍のがらがらすることを気にしなかったでしょう。しかし、これらのカリフォルニアの弱虫は、ストリングに必要なストレージの量を2倍にするという考えに耐えることができませんでした。
UTF-32は、すべての文字に4バイトを使用して、網羅性と固定長表現に重点を置いています。これは最も簡単な変換であり、Unicodeコードポイントを4バイトに直接マッピングします。もちろん、サイズ効率はそれほど高くありません。
UTF-16は妥協案であり、ほとんどの場合2バイトを使用しますが、Basic Multilingual Plane(BMP)に含まれていない特定の文字を表すために1文字あたり2 * 2バイトに拡張されます。
また参照 すべてのソフトウェア開発者の絶対的な最小絶対的に、積極的にUnicodeと文字セットについて知っておく必要があります(言い訳なし!)
ヨーロッパ言語の場合、UTF-8は小さくなります。東洋の言語では、違いはそれほど明確ではありません。
どちらも可能なすべてのUnicode文字を処理するため、互換性に違いはありません。
Unicodeの文字エンコーディングは、思ったよりも多くあります。
UTF 8
UTF-8エンコーディングは可変幅で、1〜4バイトの範囲で、各バイトの上位ビットが制御ビットとして予約されています。最初のバイトの先行ビットは、その文字に使用されたバイトの総数を示します。文字のコードポイントのスカラー値は、非制御ビットの連結です。この表では、x
はUnicode値の最下位8ビットを表し、y
は次に高い8ビットを表し、z
はそれより上位のビットを表します。
Unicode Byte1 Byte2 Byte3 Byte4
U+0000-U+007F 0xxxxxxx
U+0080-U+07FF 110yyyxx 10xxxxxx
U+0800-U+FFFF 1110yyyy 10yyyyxx 10xxxxxx
U+10000-U+10FFFF 11110zzz 10zzyyyy 10yyyyxx 10xxxxxx
「Unicode」は「UTF-16」の別の用語であり、Unicode文字セットを1文字あたり16ビットにエンコードしたものです。 UTF-8は、文字ごとに8ビットにエンコードします。
どちらの場合も、オーバーフローは別の16ビットまたは8ビットに割り当てられます。
テキストファイルのような小さなファイルの唯一の真の利点は、結果のファイルサイズです。 UTF-8は通常、より小さなファイルを生成します。しかし、この違いは中国語/日本語のテキストではそれほど顕著ではないかもしれません。
Wordでは、Unicodeはcharacter setですが、Unicode Big Endianとutf-8は2つencodings、これはコンピュータ上で01として文字を格納するために使用されます。