using System;
using System.Text;
class Program
{
static void Main()
{
string st = "Привет, мир!";
Console.WriteLine(foo(st));
}
static string foo(string input)
{
StringBuilder sb = new StringBuilder();
for(int i = 0; i < input.Length; i += Char.IsSurrogatePair(input, i) ? 2 : 1)
{
int index = Char.ConvertToUtf32(input, i);
sb.Append(@"\u" + index.ToString("x4"));
}
return sb.ToString();
}
}
Для суррогатных пар будет выдавать "некрасивые" значения - цифр будет больше четырёх штук.
Если планируется с ними работать, надо что-то придумать. Например, для всех формат "x8".
Если же нет, лучше кидать исключение по
if(Char.IsSurrogatePair(input, i))
.