UCS と Unicode のコードポイントは同じだと思いますよね?
その場合、なぜ 2 つの標準 (UCS と Unicode) が必要なのでしょうか?
それらは 2 つの標準ではありません。Universal Character Set (UCS) は標準ではありませんが、ISO 10646 などの標準で定義されているものです。これを UCS-2 などのエンコーディングと混同しないでください。
実際に異なるエンコーディングまたは異なる標準を意味するかどうかを推測するのは困難です. しかし、後者に関して言えば、Unicode と ISO 10646 はもともと、異なる目標と戦略を持つ 2 つの異なる標準化の取り組みでした。しかし、1990 年代初頭に、2 つの異なる規格による混乱を避けるために、それらは調和されました。コードポイントが実際に同じになるように調整されています。
ただし、Unicode が柔軟に機能し、単純なコード ポイントの割り当てを超えたものを標準化することに大きな関心を持っている業界コンソーシアムによって定義されていることが一因です。Unicode 標準では、文字だけでなく、多数の原則と処理規則が定義されています。ISO 10646 は、ISO およびそのメンバーの規格およびその他の文書で参照できる正式な規格です。
コードポイントは同じですが、いくつかの違いがあります。Unicode と ISO 10646 (つまり UCS) の違いに関するウィキペディアのエントリから:
それらの違いは、Unicode が ISO 10646 の範囲外の規則と仕様を追加することです。ISO 10646 は単純な文字マップであり、ISO 8859 のような以前の標準の拡張です。対照的に、Unicode は照合、フォームの正規化、ヘブライ語やアラビア語などのスクリプトの双方向アルゴリズム
すべてのソフトウェア開発者が絶対に、積極的に Unicode と文字セットについて知っておく必要がある絶対的な最小値 (言い訳はありません!)を読むと役立つ場合があります。
違いは、コード ポイントのエンコード方法にあると思います。UCS-x は、一定量のバイトを使用してコード ポイントをエンコードします。たとえば、UCS-2 は 2 バイトを使用します。ただし、UCS-2 は 2 バイト以上を必要とするコード ポイントをエンコードできません。一方、UTF はエンコードに可変量のバイトを使用します。たとえば、UTF-8 は少なくとも 1 バイト (ASCII 文字の場合) を使用しますが、文字が ASCII 範囲外の場合はより多くのバイトを使用します。