1

これは、Unicodeの質問というよりもMBCSの質問です。各インスタンスがそのメンバーの1つとしてUnicode文字を保持する構造体のリストを返すAPIを作成する必要があります。これは.NETにあるので、UTF-16が欲しいと思うかもしれませんが、アジアの文字の場合は、2文字が必要です。Unicode文字を返すときのベストプラクティスは何ですか?

  1. 2つのUTF-16文字の配列を使用します-1番目の文字をテストして、サロゲートであるかどうかを確認します。カウントしますか?
  2. サロゲートの問題を無視し、呼び出し元に任せて、実際のグリフエンコーディングスパン構造体を把握しますか?
  3. 代わりに文字列を使用して、長さが1文字でも2文字でもかまいませんか?
  4. UTF-32を使用する

人々は通常UTF-8に対して何をしますか?個々の文字を処理することはなく、すべてが文字列に保持されていると思います(たとえば、文字列内の文字の検索は、実際にはサブ文字列を検索することによって行われます)。多分それは私の中のC++プログラマーですが、文字列はとても重いようです。

#3をやろうと思います。他の人は何をしましたか?

4

1 に答える 1

1

あなたは文字列を使うことについて正しいです。Unicodeでは、1つの文字でも複数のコードポイント(それぞれがエンコーディングに応じて特定のバイト数を必要とする)を必要とする可能性があるため、文字列以外のもので実際に作業することはできません。などの関数でさえisUpper、文字列を取り、その最初の要素でのみ機能する必要があります。

文字が複数のコードポイントを必要とする理由は、通常、アクセントなどの文字の組み合わせによるものです。

UnicodeFAQでこの質問を参照してください

于 2010-02-19T03:25:15.127 に答える