Преобразование обычного текста в соответствующее значение Юникода? - PullRequest
0 голосов
/ 24 апреля 2019

Я пишу программу, которая требует, чтобы я преобразовал текст Unicode в соответствующее значение Unicode.Как и при преобразовании буквы «а» в число в таблице ASCII (97 в десятичном виде).Только я хотел бы знать, можно ли это сделать в Юникоде.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

.NET не имеет встроенного метода для итерации букв или кодов символов в том смысле, в котором вы спрашиваете, поскольку они находятся на среднем уровне между кодировкой символов, используемой .NET (UTF-16), и графемами ("пользователь").персонажи ").

UTF-16 кодирует каждую кодовую точку Unicode в одну или две кодовые единицы (.NET Char с псевдонимом в C # как char).A String (с псевдонимом в C # как string) - это подсчитанная последовательность кодовых единиц UTF-16.

Структура Char имеет некоторые методы, которые работают с кодовыми точками (как Int32), и некоторые неудобные, которые могут помочь перебирать кодовые точки.Примечание: кодовые точки обычно пишутся с префиксом U + и 4 или 5 шестнадцатеричными цифрами.

StringInfo класс имеет несколько методов, которые выполняют итерации графем (так называемые «текстовые элементы»).

Но, поскольку вы спрашиваете о кодах символов Unicode («кодовые точки»), пакет NuGet UnicodeInformation может быть лучшим вариантом.

С его помощью вы также можете получить описание каждой кодовой точки, опубликованное Unicode.org .Их веб-сайт содержит много информации, включая полные списки кодовых точек .

var s = "Put your ? repair hobby on your résumé."; 
// ? takes two UTF-16 code units. 
// Second é is two codepoints: "e\u0301", base and combining codepoints

var e = StringInfo.GetTextElementEnumerator(s);
while (e.MoveNext())
{
    var grapheme = (String)e.Current;
    Console.WriteLine(grapheme);

    foreach (var codepoint in grapheme.AsCodePointEnumerable())
    {
        var info = UnicodeInfo.GetCharInfo(codepoint);
        Console.WriteLine($"    U+{codepoint:X04} {info.Name} {info.Category}");
    }
}

Кроме того, если вы не знаете, UTF-16 (или его совместимый с форвардом предшественник UCS-2)) уже 25 лет является родной кодировкой во многих средах: VB4 / 5/6 / A / Script, Java, JavaScript, Windows API, NTFS, SQL NCHAR и NVARCAR,….

0 голосов
/ 24 апреля 2019

Попробуйте это:

string text = "€ a+…”";
foreach (char c in text)
{
    Console.WriteLine("{0} U+{1:x4} {2}", c, (int)c, (int)c);
}

Для каждого символа в строке это отображает:

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