私は本当にこのようなもので良くしようとしています。私はこのような国際化の概念でかなり機能的ですが、その背後にある理論についてより良い背景を得る必要があります。
Spolskyの記事を読んだことがありますが、これらの3つの用語は、その記事でも同じ意味で使用されているため、まだわかりません。少なくとも2人は同じことを話していると思います。
私は、開発者の大部分が日常的にこのようなものを通り抜けているのではないかと思います。私はもうそれらの開発者の一人になりたくありません。
私は本当にこのようなもので良くしようとしています。私はこのような国際化の概念でかなり機能的ですが、その背後にある理論についてより良い背景を得る必要があります。
Spolskyの記事を読んだことがありますが、これらの3つの用語は、その記事でも同じ意味で使用されているため、まだわかりません。少なくとも2人は同じことを話していると思います。
私は、開発者の大部分が日常的にこのようなものを通り抜けているのではないかと思います。私はもうそれらの開発者の一人になりたくありません。
「文字セット」とは、適切に指定された個別の文字のリストです。
「エンコーディング」は、文字セット(通常は今日のUnicode)と(通常はバイトベースの)文字の技術的表現との間のマッピングです。
UTF-8はエンコーディングですが、文字セットではありません。Unicode文字セット(*)のエンコーディングです。
他のほとんどのよく知られたエンコーディング(例:ISO-8859-1)は、個別の文字セットとして開始されたため、混乱が生じます。その後、Unicodeがこれらの文字セットのほとんどのスーパーセットとして登場したとき、それらを単なる孤立した文字セットではなく、同じ(Unicode)文字セットの異なる(ただし部分的な)エンコーディングと考えることが可能になりました。これらをこのように見ると、Unicodeを介してそれらを簡単に変換できます。これは、単に分離された文字セットである場合には不可能です。ただし、それらを文字セットと呼ぶことは依然として理にかなっているため、どちらの用語も使用できます。
「コードページ」は、IBMに由来する用語であり、表示される記号のセットを選択します。この用語は、DOS、次にWindowsで使用され続け、Unicode対応のWindowsまで使用され、番号付きの識別子を持つエンコーディングとして機能します。番号付きの「コードページ」は本質的にMicrosoftに限定されないアイデアですが、今日、この用語はほとんどの場合、Windowsが認識しているエンコーディングを意味します。
コードページの「ある数」について話しているときは、標準化団体によって考案されたエンコーディングとは異なり、通常はWindows固有のエンコーディングについて話します。たとえば、コードページ28591は通常、その名前ではなく、単に「ISO-8859-1」と呼ばれます。ISO-8859-1に基づくWindows固有の西ヨーロッパのエンコーディング(制御コードの一部をいくつかの余分な文字で置き換えたもの)は、通常、「コードページ1252」と呼ばれます。
[*:すべてのUTFは文字セットではなくエンコーディングですが、この種のものはUnicodeに限定されていません。たとえば、日本規格JIS X 0208は、文字セットとその2つの異なるバイトエンコーディングを定義しています。やや不快なハイバイトベースのエンコーディング(「Shift-JIS」)と、非常に恐ろしいエスケープスイッチングベースのエンコーディング(「JIS」)です。 ')。]
文字セットはまさにそれであり、使用できる文字のセットです。
これらの各文字は、コードポイントと呼ばれる整数にマップされます。
これらのコードポイントがメモリ内でどのように表されるかがエンコーディングです。エンコーディングは、コードポイント(U + 0041-文字「A」のUnicodeコードポイント)を生データ(ビットおよびバイト)に変換するための単なる方法です。
Joelの記事はかなり的を射ていると思いました。これをもたらしたのは、キャラクターセットとストレージの進化の背後にある歴史です。
FWIW、私の過度に単純化した見方では
IMHO Wikipediaは現在、コードページを「文字エンコードの別の名前」として定義し、「文字セット」を「文字エンコード」にリダイレクトすることで問題を解決していません。
この本のUnicodeに関する章、Advanced Perl Programmingには、エンコーディング、文字セット、および私が遭遇したUnicodeの他のエンティティの最良の説明が含まれています。残念ながら、オンラインで無料で利用できるとは思いません。