物理バイト ストリームの観点から、UTF8 を使用して保存された各ファイルについて、UTF8 bomless は Cp1252 とまったく同じだと思いますが、それは本当ですか?
2 に答える
間違いなく真実ではありません。真のステートメントにしたい場合は、「US-ASCII 文字のみを使用する場合」という句を追加する必要があります。しかし、それは巨大な「もし」です。US-ASCII 文字のみを使用した場合、多くのエンコーディングは存在しません。UTF-8 を含む多くのエンコーディングは、すべての US-ASCII 文字が同じシングルバイト表現でエンコードされることを保証します。
いいえ。UTF-8 はより多くの文字セットをカバーするだけでなく、コードポイントを超える Unicode 文字U+7f
は UTF-8 では複数バイト、CP-1252 では 1 バイトでエンコードされます。CP-1252 と ISO-8859-1 (Latin-1 としても知られる) の間にはより密接な対応関係がありますが、これらも小さいながらも重要な点で異なります。この違いは、発生する最も一般的なエンコーディングの問題の多くを占めています。
一例を挙げると、左の一重中括弧は unicode codepoint で表されU+2018
ます。CP-1252 では、これは byte としてエンコードされます0x91
。この文字は Latin-1 にはまったく存在せず、UTF-8 では 3 バイト シーケンスでエンコードされます 0xe28098
。
より一般的に言えば、Latin-1 と UTF-8 は Unicode ベースのエンコーディングであると言えます。これは、すべてのエンコーディングがアルゴリズム的に Unicode コードポイントにマッピングされ、その文字を表すことができるためです。一方、CP-1252 は非 Unicode です。ベースのエンコーディング。文字を表すために使用されるバイトとその Unicode コードポイントの間に規則的な対応はありません。