Вы можете использовать библиотеку UnicodeInformation , о которой вы упомянули, для достижения этой цели. Он дает вам всю необходимую информацию, поэтому вы можете создать свой собственный вспомогательный класс для обратного сопоставления.
Вот пример класса:
public static class UnicodeName
{
private static Dictionary<string, string> nameDisplayTextDictionary =
UnicodeInfo.GetBlocks().SelectMany((block) => block.CodePointRange).Select(codePoint => UnicodeInfo.GetCharInfo(codePoint)) // select all character infos
.Where(charInfo => charInfo.Name != null) // filter out the ones that have null names
.ToDictionary(charinfo => charinfo.Name, charInfo => charInfo.GetDisplayText()); // create lookup dictionary to get the display text from the name
public static string GetDisplayText(string unicodeName)
{
if (nameDisplayTextDictionary.ContainsKey(unicodeName))
{
return nameDisplayTextDictionary[unicodeName];
}
else
{
throw new Exception($"Unknown unicode name {unicodeName}");
}
}
}
Вы можете использовать его так, как хотите.
string displayText = UnicodeName.GetDisplayText("EURO SIGN");
Метод возвращает строку, поскольку в некоторых случаях возвращаемое значение не является одним символом.