18

仕事用のプログラムの 1 つを国際化する作業を行っています。私は先見の明を使用して、起こりうる問題を回避したり、将来的にプロセスをやり直したりしようとしています。

UTF-8、UTF-16、および UTF-32 のリファレンスが表示されます。私の質問は2つの部分です:

  1. UTF-8サポートしていない言語は?
  2. UTF-16 と UTF-32 は UTF-8 よりもどのような利点がありますか?

UTF-8 がすべてで機能する場合、UTF-16 と UTF-32 の利点が何であるかに興味があります (たとえば、データベース内の特別な検索機能など)。理解することは、プログラムの設計 (およびデータベース接続) を完了するのに役立つはずです。 ) ちゃんと。ありがとう!

4

2 に答える 2

18

3 つすべてが同じものを表現する方法が異なるだけなので、ある言語でサポートされていて他の言語でサポートされていない言語はありません。

相互運用が必要なシステムで UTF-16 が使用されることがあります。たとえば、Windows API はネイティブで UTF-16 を使用します。

理論的には、UTF-32 は単一の 32 ビット整数で任意の「文字」を表すことができ、複数を使用する必要はありませんが、UTF-8 と UTF-16 は複数の 8 ビットまたは 16 ビット整数を使用する必要があります。それをするために。しかし、実際には、一部のコードポイントの組み合わせバリアントと非組み合わせバリアントでは、実際にはそうではありません。

UTF-8 の利点の 1 つは、8 ビット、16 ビット、または 32 ビットの整数の数がそれぞれコードポイントの数と同じであると想定しているというバグがある場合、それがより迅速に明らかになることです。 UTF-8 の場合 - ASCII 以外のコードポイントがあるとすぐに何かが失敗しますが、UTF-16 の場合はバグが見過ごされる可能性があります。

最初の質問に答えるために、現在 Unicode でサポートされていないスクリプトのリストを次に示します: http://www.unicode.org/standard/unsupported.html

于 2013-03-27T16:21:05.343 に答える
13

UTF8 は 1 ~ 4 バイトの可変、UTF16 は 2 または 4 バイト、UTF32 は 4 バイト固定です。

そのため、ASCII が最も一般的な文字である場合は UTF-8 が有利であり、ASCII が支配的でない場合は UTF-16 の方が優れており、UTF-32 は 4 バイトで可能なすべての文字をカバーします。

于 2013-03-27T16:21:53.660 に答える