Лучший способ декодирования шестнадцатеричной последовательности символов Юникода в строку

StackOverflow https://stackoverflow.com/questions/1992509

  •  22-09-2019
  •  | 
  •  

Вопрос

Я работаю с C # .Net

Я хотел бы знать, как преобразовать строку формы Unicode, такую как "\ u1D0EC" (обратите внимание, что она находится выше "\uFFFF"), в ее символ..."𝃬"

Спасибо За Аванс!!!

Это было полезно?

Решение

Эта кодовая точка Unicode закодирована в UTF32..NET и Windows кодируют Unicode в UTF16, вам придется перевести.UTF16 использует "суррогатные пары" для обработки кодовых точек выше 0xffff, аналогичный подход, что и UTF8.Первый код пары равен 0xd800..dbff, второй код равен 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));

Недавно я запустил свой конвертер FOSS Uncode в Codeplex (http://unicode.codeplex.com)

вы можете преобразовать все, что захотите, в шестнадцатеричный код и из шестнадцатеричного кода получить нужный символ, также существует полная информационная база данных символов.

Я использую этот код

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/

Похоже, вы просто хотите, чтобы это было в вашем коде...вы можете ввести его как строковый литерал, используя escape-код \Uxxxxxxxx (обратите внимание, что это капитал U, и там должен должно состоять из 8 цифр).Для этого примера это было бы: "\U0001D0EC".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top