2011-07-23 13 views
2

は、たぶん私は、32ビットの文字列を必要といけないが、私はsymbolaフォントをつかんで、私は(URLまたは任意のテキストエリアに)それを貼り付けるとき、文字を見ることができますC#で32ビットのユニコード文字を使用するにはどうすればよいですか?

http://www.fileformat.info/info/unicode/char/1f4a9/index.htm 32ビットの文字を表現する必要があるので、私は知っていますそのフォントのサポート。

しかし、私はC#/ .NETアプリケーションでどのようにサポートしていますか?

-edit-私は何かを追加します。 .NET Winformアプリケーションで上記の文字を貼り付けたとき、文字が正しく表示されません。それをFirefoxに貼り付けると正しく表示されます。 winformアプリケーションで文字を正しく表示するにはどうすればよいですか?

+0

PHPでも、 '8ビット= 4バイト 'はfalseにする必要があります。 –

+0

「文字が正しく表示されない」:アプリケーションで使用するフォントは何ですか?そのフォントに貼り付けている文字がありますか? – svick

+0

@svick:私はwinform、テキストボックスを使用しています。私はそのフォントをsymbolaに設定しました。私は文字を正しく見ていない –

答えて

7

私は私があなたの質問を理解することを確認していない:.NETで

  • String sがUTF-16でエンコードされ、そして、あなたはこれについてできることは何もありません。文字列のUTF-32バージョンを取得するには、UTF32Encodingクラスのバイト配列に変換する必要があります。
  • Char .NETのアクターはこのように16ビット長であり、これについても何もできません。 UTF-32でエンコードされた文字は、バイト配列(4つの項目)でしか表現できません。この目的のためにUTF32Encodingクラスを使用できます。
  • すべてのUTF-32文字には同等のUTF-16表現があり、その逆もあります。したがってこの文脈では、文字とその異なる表現(エンコーディング)についてのみ言及することができ、UTF-16は.NETプラットフォーム上で選択された表現です。
+0

編集で問題の詳細を説明しました –

3

"サポート"とはどういう意味ですか?しかし、文字列の操作を行わない限り、1つの16ビットのcharに収まらない文字で作業するために特別な作業は必要ありません。それらは代理ペアとして表されますが、stringを全体として扱う場合は、そのことについて知る必要はありません。

1つの例外は、一部の文字列操作方法が正しく機能しないことです。たとえば、"\U0001F4A9".Substring(1)は、サロゲートペアの後半を返します。サロゲートペアは有効な文字列ではありません。

+0

編集の問題の詳細を説明しました –