Когда вы пишете код типа string abc= "मेरा";
, у вас уже есть код Unicode (в частности, UTF-16), поэтому вам не нужно ничего преобразовывать. Если вы хотите получить доступ к единичным символам, вы можете сделать это с помощью обычного индекса: например, abc[1]
равно े
(гласный DEVANAGARI ЗНАК E).
Если вы хотите увидеть числовые представления этих символов, просто приведите их к целым числам. Например
abc.Select(c => (int)c)
дает последовательность чисел 2350, 2375, 2352, 2366. Если вы хотите увидеть шестнадцатеричное представление этих чисел, используйте ToString()
:
abc.Select(c => ((int)c).ToString("x4"))
возвращает последовательность строк «092e», «0947», «0930», «093e».
Обратите внимание, что когда я произносил числовые представления, я фактически имел в виду их кодирование с использованием UTF-16. Для символов в Базовая многоязычная плоскость это то же самое, что и их кодовая точка Unicode. Подавляющее большинство используемых символов лежат в BMP, включая тех 4 хинди символов, которые представлены здесь.
Если вы хотите обрабатывать символы и в других плоскостях, вы можете использовать код, подобный следующему.
byte[] bytes = Encoding.UTF32.GetBytes(abc);
int codePointCount = bytes.Length / 4;
int[] codePoints = new int[codePointCount];
for (int i = 0; i < codePointCount; i++)
codePoints[i] = BitConverter.ToInt32(bytes, i * 4);
Поскольку UTF-32 кодирует все (21-битные) кодовые точки напрямую, это даст вам их. (Возможно, есть более простое решение, но я его не нашел.)