1. ホーム
  2. unicode

[解決済み】Unicode、UTF、ASCII、ANSIのフォーマットの違いについて

2022-03-24 08:54:32

質問

の違いは何ですか? Unicode , UTF8 , UTF7 , UTF16 , UTF32 , ASCII および ANSI エンコーディングは?

これらはプログラマーにとってどのような点で有用なのでしょうか?

どのように解決するのですか?

リストを下っていく。

  • " ユニコード 残念ながら、多くの文書では、このエンコーディングは、特定のシステムがデフォルトで使用する Unicode エンコーディングを指すものとして、不正確な表現で使用されています。 WindowsとJavaでは、これはしばしばUTF-16を意味し、他の多くの場所では、UTF-8を意味します。 正しくは、Unicodeは抽象的な文字セットそのものを指しており、特定のエンコーディングを指しているわけではありません。
  • UTF-16 コード単位は2バイトです。これは、.NETの文字列のネイティブフォーマットであり、一般にWindowsとJavaでも同じです。の外の値は 基本多言語面 (BMP)はサロゲートペアとしてエンコードされます。これらの 以前は しかし、現在では多くの消費者向けアプリケーションが絵文字をサポートするために、BMP以外の文字を認識する必要があります。
  • UTF-8 : 可変長エンコーディングで、1コードポイントあたり1〜4バイト。ASCII 値は 1 バイトを使って ASCII として符号化されます。
  • UTF-7 : 通常、メールのエンコードに使用されます。メールをやっていない人が必要だと思ったら、それは間違いです。(これはニュースグループなどに投稿している人たちの経験です。メール以外では、本当に全く広く使われていません)。
  • UTF-32 : 1コードポイントあたり4バイトを使用する固定幅エンコーディング。これはあまり効率的ではありませんが、BMPの外では生活が楽になります。私は、.NETの Utf32String クラスは、私の MiscUtil ライブラリが必要な場合は、それを使用することができます。(あまり徹底的なテストはしていないのですが。)
  • ASCII : 下位7ビットのみを使用した1バイトエンコーディング。(ユニコードコードポイント0-127。) アクセントなどはありません。
  • ANSI: ANSIエンコーディングは1つではありません。通常、人々が「ANSI」と言った場合、それは「私のシステムのデフォルトのロケール/コードページ」という意味です。 エンコーディング.Default であり、多くの場合 Windows-1252 が、他のロケールである場合もある。

にもあります。 私のユニコードのページ Unicodeの問題をデバッグするためのヒント .

もう一つの大きなコードのリソースは unicode.org このページには、読み切れないほどの情報が含まれていますが、最も有用なのは コードチャート .