Я пытаюсь перевести синтаксический анализ сообщения в формате RTF (мне нужно сохранить теги форматирования, чтобы я не мог использовать трюк, когда вы просто вставляете в RichTextBox
и получаете .PlainText
из)
Возьмите код RTF для строки a基bমূcΟιd
, вставленной прямо в Wordpad:
{\rtf1\ansi\ansicpg1252\deff0\deflang2057{\fonttbl{\f0\fnil\fcharset0 Calibri;}{\f1\fswiss\fcharset128 MS PGothic;}{\f2\fnil\fcharset1 Shonar Bangla;}{\f3\fswiss\fcharset161{\*\fname Arial;}Arial Greek;}}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang9\f0\fs22 a\f1\fs24\'8a\'ee\f0\fs22 b\f2\fs24\u2478?\u2498?\f0\fs22 c\f3\fs24\'cf\'e9\f0\fs22 d\par
}
Сложно разобраться, если у вас мало общего с RTF. Итак, вот что я смотрю на
\'8a\'ee\f0\fs22 b\f2\fs24\u2478?\u2498?\f0\fs22 c\f3\fs24\'cf\'e9
Обратите внимание, что 基
(u+57FA
) равен \'8a\'ee
, но মূ
, который на самом деле представляет собой два символа ম
(\u2478?
) и ূ
(\u2498?
), равен \u2478?\u2498?
это нормально, но Οι
, который состоит из двух отдельных символов Ο
и ι
, равен \'cf\'e9
.
Есть ли способ определить, смотрю ли я на что-то, что должно быть одним символом, например 基
= \'bb\'f9
или двумя символами Ο
и ι
= \'cf\'e9
?
Я думал, что, возможно, это \lang
, но это совсем не так, потому что \lang
не меняется с момента его первой установки. Я уже учел разные кодовые страницы из разных значений Charset
в шрифтах, но, похоже, мне ничего не сказано о том, следует ли мне рассматривать две ссылки на Юникод рядом друг с другом как двухбайтовый символ или нет.
Как я могу узнать, должен ли символ, на который я смотрю, быть двухбайтовым (или многобайтовым) или однобайтовым?