3

正確に Unicode をいつ使用するかについての (簡潔な) 情報はあまり見つかりませんでした。ベスト プラクティスは常に Unicode を使用することだと多くの人が言うことは理解しています。しかし、Unicode 文字列はより多くのメモリ フットプリントを持っています。Unicode は次の場合にのみ使用する必要があると言うのは正しい です?

  • ローカル以外での画面への出力 (デバッグなど)。
  • 一般に、両端が異なるロケール/国にあるネットワークを介して任意のタイプのテキストを送信する
  • どれを使えばいいかわからないとき

誰かが Unicode で実際に何が起こるかの基本(簡潔) を説明してくれれば有益だと思います。

  • 物理(バイト)文字列は、送信者とは異なる文字列の表現(コードページ、その他...これは興味深いがすでに詳細です)を使用してマシンに送信されます。

コンテキストはプログラミング言語 (C++ など) で Unicode を使用していますが、この質問への回答があらゆるエンコーディング状況に使用できることを願っています。
また、Unicode と NLS が同じものではないことは承知していますが、NLS は Unicode の使用を暗示していると言うのは正しいですか?

PS 素晴らしいサイト

4

3 に答える 3

5

常にUnicodeを使用してください。そうすることで、あなたや他の人の多くの負担を軽減できます。

混乱しているかもしれないのは、エンコーディングの問題です。Unicode 文字列は、同等の ASCII (または他のエンコーディング) 文字列よりも多くのメモリを必要とするわけではありません。これは、使用されるエンコーディングに大きく依存します。

「Unicode」は、「UCS-2」または「UTF-16 」の同義語として使用されることがあります。厳密に言えば、「Unicode」は文字セットとその Unicode コードポイントを定義する標準であるため、その使用は間違っています。バイト (またはワード) へのマッピング自体は定義しません。UTF-16、UTF-8、およびその他のエンコーディングは、文字を具体的なバイトにマッピングする作業を引き継ぎます。

于 2011-10-24T10:08:51.917 に答える
4

Unicode の優れた点は、制限や多くの頭痛の種から解放されることです。Unicode は現在利用可能な最大の文字セットです。つまり、現在使用されている中途半端な主流言語のほぼすべての文字を実際にエンコードして使用することができます。他の文字セットでは、実際に文字をエンコードできるかどうかを考える必要があります。Latin-1 は文字「あ」をエンコードできず、Shift-JIS は文字「ڥ」をエンコードできません。基本的なラテン語/アラビア語/日本語/その他の文字のサブセット以外は必要ないと確信している場合にのみ、Latin-1、BIG-5、Shift-JIS、ASCII などの特殊なエンコーディングを選択する必要があります。

Unicode は利用可能な最も用途の広い文字セットであるため、準拠するのに適した標準です。

Unicode エンコーディングは特別なものではありません。ビット表現が少し複雑なだけです。これは、より多くの文字をエンコードする必要がある一方で、スペースを効率的に使用しようとするためです。このトピックの非常に詳細な説明については、テキストを操作するためのエンコーディングと文字セットについて、すべてのプログラマーが絶対に、積極的に知る必要があることを参照してください。

于 2011-10-25T01:49:42.463 に答える
1

文字エンコーディングの違いを確認するのに役立つ小さなユーティリティがあります。http://sodved.awardspace.info/unicode.pl . öフィールドに貼り付けるとRaw (UTF-8)、異なるエンコーディングの異なるバイト シーケンスで表されていることがわかります。そして、他の2つの良い答えが説明しているように、一部の非Unicodeエンコーディングはそれをまったく表現できません。

于 2011-10-25T12:34:09.253 に答える