web-dev-qa-db-ja.com

Unicode、Unicode Big Endian、またはUTF-8?違いはなんですか?どのフォーマットが良いですか?

テキストファイルをメモ帳で英語以外のテキストとともに保存しようとすると、nicodenicode Big EndianおよびTF-8。これらの形式の違いは何ですか?

notが(古いOSバージョンまたはアプリとの)下位互換性を必要とし、notファイルサイズに注意してください。これらのフォーマットのどれが良いですか?

(テキストは他の言語に加えて、中国語や日本語などの言語であることができると仮定します。)

注:以下の回答とコメントから、メモ帳の専門用語では、UnicodeはUTF-16(リトルエンディアン)、UnicodeビッグエンディアンはUTF-16(ビッグエンディアン)、UTF-8はUTF -8。

19
Ashwin Nanjappa

ダンノ。のこぎりとハンマーのどちらが良いですか? :-)

nicodeはUTFではありません

記事には、目前の主題に少し関連性のある部分があります。

  • UTF-8は、ASCIIセット(可変長表現:各文字は1バイトから4バイトで表され、ASCII文字はすべて収まる1バイト)。ジョエルが言うように:

「それらすべてのゼロを見てください!」彼らはアメリカ人であり、U + 00FFを超えるコードポイントをほとんど使用しない英語のテキストを見ていたため、彼らは言った。また、彼らはカリフォルニアでリベラルなヒッピーでした。彼らがテキサス人であるならば、彼らはバイト数の2倍のがらがらすることを気にしなかったでしょう。しかし、これらのカリフォルニアの弱虫は、ストリングに必要なストレージの量を2倍にするという考えに耐えることができませんでした。

  • UTF-32は、すべての文字に4バイトを使用して、網羅性と固定長表現に重点を置いています。これは最も簡単な変換であり、Unicodeコードポイントを4バイトに直接マッピングします。もちろん、サイズ効率はそれほど高くありません。

  • UTF-16は妥協案であり、ほとんどの場合2バイトを使用しますが、Basic Multilingual Plane(BMP)に含まれていない特定の文字を表すために1文字あたり2 * 2バイトに拡張されます。

また参照 すべてのソフトウェア開発者の絶対的な最小絶対的に、積極的にUnicodeと文字セットについて知っておく必要があります(言い訳なし!)

19
Jason Baker

ヨーロッパ言語の場合、UTF-8は小さくなります。東洋の言語では、違いはそれほど明確ではありません。

どちらも可能なすべてのUnicode文字を処理するため、互換性に違いはありません。

4
Mark Ransom

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
    
  • UCS-16
  • UCS-16BE
  • UCS-16LE

  • UTF-16
  • UTF-16BE
  • UTF-16LE

  • UTF-32
  • UTF-32-BE
3
Brad Gilbert

「Unicode」は「UTF-16」の別の用語であり、Unicode文字セットを1文字あたり16ビットにエンコードしたものです。 UTF-8は、文字ごとに8ビットにエンコードします。

どちらの場合も、オーバーフローは別の16ビットまたは8ビットに割り当てられます。

1
John Saunders

テキストファイルのような小さなファイルの唯一の真の利点は、結果のファイルサイズです。 UTF-8は通常、より小さなファイルを生成します。しかし、この違いは中国語/日本語のテキストではそれほど顕著ではないかもしれません。

1
zildjohn01

Wordでは、Unicodeはcharacter setですが、Unicode Big Endianとutf-8は2つencodings、これはコンピュータ上で01として文字を格納するために使用されます。

0
thuzhf