У меня есть веб-сайт и проект Unity, которые общаются друг с другом через веб-сервер с помощью веб-сокетов.Я кодирую / декодирую сообщения, которые отправляю, используя json.Со стороны Unity я использую Newtonsoft для json и websocketsharp для WebSockets.Сообщения отправляются нормально и все работает, но сейчас я пытаюсь внедрить смайлики в Unity для корректного отображения.Мне удалось создать спрайт-лист из всех смайликов, создать словарь, ключом которого будет их Unicode, а значениями - их положение в спрайт-листе.Проблема в том, что когда я получаю смайлик (например, Unicode odeemoji: U + 1F910), Unity получает его как «\ uD83E \ uDD10».Есть ли способ отправить эмодзи в виде строкового литерала своего Unicode?Если нет, то есть ли способ проанализировать интерпретированный c # Unicode обратно в исходный Unicode?Я нашел регулярное выражение, которое преобразует более распространенные символы из вышеуказанного формата обратно в соответствующий символ, но не возвращает мне Unicode в виде строки.Вот что я в настоящее время использую для этого:
var result = Regex.Replace(
arrivedMessages[0],
@"\\[Uu]([0-9A-Fa-f]{4})",
m => char.ToString(
(char)ushort.Parse(m.Groups[1].Value, NumberStyles.AllowHexSpecifier)));
С помощью приведенного выше кода, если пользователь отправит такой символ, как º, декодированный json будет читать \ u00ba, но вышеприведенное регулярное выражение будетпреобразовать его обратно в º.Когда я пытаюсь отправить смайлик, такой как mbсимбол, json будет читать «\ ud83e \ udd10», и результат регулярного выражения будет пустым.Есть ли проблема с регулярным выражением?Или есть лучший способ сделать это?Спасибо!
Редактировать:
Чтобы упростить общий вопрос: есть ли способ преобразовать "\ uD83E \ uDD10" обратно в строковый литерал Unicode "U + 1F910"