私はC#.Netで作業しています
「\u1D0EC」(「\ uFFFF」の上にあることに注意してください)のようなUnicode形式の文字列をその記号に変換する方法を知りたいです... ""
事前に感謝します!!!
その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();
}
}
とで各シーケンスを変換しint.Parse(String, NumberStyles)ますchar.ConvertFromUtf32:
string s = @"\U1D0EC";
string converted = char.ConvertFromUtf32(int.Parse(s.Substring(2), NumberStyles.HexNumber));
最近、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/でコード全体を見ることができます
コードにこれが必要なようです...エスケープコードを使用して文字列リテラルとして入力できます(これは大文字のUであり、8桁である必要\Uxxxxxxxxがあることに注意してください)。この例では、次のようになります。"\U0001D0EC"