383

、、、、、、、およびエンコーディングUnicodeの違いはUTF8何ですか?UTF7UTF16UTF32ASCIIANSI

これらはプログラマーにとってどのように役立ちますか?

4

2 に答える 2

516

あなたのリストを下に行く:

  • Unicode」はエンコーディングではありませんが、残念ながら、多くのドキュメントでは、特定のシステムがデフォルトで使用する Unicode エンコーディングを参照するために不正確に使用されています。Windows と Java では、これは多くの場合 UTF-16 を意味します。他の多くの場所では、UTF-8 を意味します。正しくは、Unicode は特定のエンコーディングではなく、抽象文字セット自体を指します。
  • UTF-16 : 「コード単位」あたり 2 バイト。これは、.NET、および一般に Windows と Java における文字列のネイティブ形式です。Basic Multilingual Plane (BMP)外の値は、サロゲート ペアとしてエンコードされます。これらは以前はほとんど使用されていませんでしたが、今では多くの消費者向けアプリケーションが絵文字をサポートするために非 BMP 文字を認識する必要があります。
  • UTF-8 : 可変長エンコーディング、コード ポイントあたり 1 ~ 4 バイト。ASCII 値は、1 バイトを使用して ASCII としてエンコードされます。
  • UTF-7 : 通常、メールのエンコードに使用されます。必要だと思っていて、メールをしていないのなら、それは間違っている可能性があります。(これは、ニュースグループなどに投稿した私の経験です。メール以外では、実際にはまったく広く使用されていません。)
  • UTF-32 : コード ポイントごとに 4 バイトを使用する固定幅エンコーディング。これはあまり効率的ではありませんが、BMP 外での生活が楽になります。必要に応じて、 MiscUtilライブラリの一部として.NETUtf32Stringクラスを用意しています。(十分にテストされているわけではありません。念のため。)
  • ASCII : 下位 7 ビットのみを使用する 1 バイト エンコーディング。(Unicode コード ポイント 0 ~ 127。) アクセントなどはありません。
  • ANSI: 固定された ANSI エンコーディングは 1 つもありません。多くの ANSI エンコーディングがあります。通常、人々が「ANSI」と言うときは、Encoding.Defaultを介して取得される「システムのデフォルトのロケール/コードページ」を意味し、多くの場合Windows-1252ですが、他のロケールでもかまいません。

私の Unicode ページUnicode 問題をデバッグするためのヒントには、さらに多くの情報があります。

コードのもう 1 つの大きなリソースはunicode.orgです。これには、これまでに作業できなかったほど多くの情報が含まれています。おそらく、最も役立つのはコード チャートです。

于 2009-03-31T06:15:04.150 に答える
77

文字エンコーディングを始めるための読み物: Joel on Software: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

ちなみに、ASP.NET は関係ありません。エンコーディングはユニバーサルです。

于 2009-03-31T06:10:06.970 に答える