5

私はC#.Netで作業しています

「\u1D0EC」(「\ uFFFF」の上にあることに注意してください)のようなUnicode形式の文字列をその記号に変換する方法を知りたいです... ""

事前に感謝します!!!

4

4 に答える 4

7

そのUnicodeコードポイントはUTF32でエンコードされています。.NETおよびWindowsはUTF16でUnicodeをエンコードするため、翻訳する必要があります。UTF16は、「代理ペア」を使用して、UTF8と同様のアプローチである0xffffを超えるコードポイントを処理します。ペアの最初のコードは0xd800..dbffで、2番目のコードは0xdc00..dfffです。このサンプルコードを試して、それが機能していることを確認してください。

using System;
using System.Text;

class Program {
  static void Main(string[] args) {
    uint utf32 = uint.Parse("1D0EC", System.Globalization.NumberStyles.HexNumber);
    string s = Encoding.UTF32.GetString(BitConverter.GetBytes(utf32));
    foreach (char c in s.ToCharArray()) {
      Console.WriteLine("{0:X}", (uint)c);
    }
    Console.ReadLine();
  }
}
于 2010-01-02T19:30:22.780 に答える
2

とで各シーケンスを変換しint.Parse(String, NumberStyles)ますchar.ConvertFromUtf32

string s = @"\U1D0EC";
string converted = char.ConvertFromUtf32(int.Parse(s.Substring(2), NumberStyles.HexNumber));
于 2010-01-02T19:32:03.087 に答える
1

最近、Codeplex( http://unicode.codeplex.com)でFOSSUncodeConverterをプッシュしました。

必要なものを16進コードに変換し、16進コードから正しい文字を取得できます。また、完全な情報文字データベースもあります。

私はこのコードを使用します

public static char ConvertHexToUnicode(string hexCode)
    {
        if (hexCode != string.Empty)
            return ((char)int.Parse(hexCode, NumberStyles.AllowHexSpecifier));

        char empty = new char();
        return empty;
    }//end

あなたはhttp://unicode.codeplex.com/でコード全体を見ることができます

于 2010-01-04T15:03:33.137 に答える
0

コードにこれが必要なようです...エスケープコードを使用して文字列リテラルとして入力できます(これは大文字のUであり、8桁である必要\Uxxxxxxxxがあることに注意してください)。この例では、次のようになります。"\U0001D0EC"

于 2010-05-12T12:05:35.023 に答える