#c# #encoding #ascii
#c# #кодирование #ascii
Вопрос:
Я хочу преобразовать строку типа «123» в строку типа «u0031 u0032 u0033». Как я могу это сделать в .NET? Например: обратное преобразование:
Encoding enc = Encoding.GetEncoding("us-ascii",
new EncoderExceptionFallback(),
new DecoderExceptionFallback());
byte[] by = enc.GetBytes(s);
string ans = enc.GetString(by);
return ans;
Ответ №1:
Строки в .NET уже являются Unicode, поэтому нет необходимости конвертировать их из Unicode в Unicode.
Если вы хотите вывести строку, экранированную в Юникоде, попробуйте это:
string ans = string.Concat(s.Select(c => string.Format("\u{0:x4}", (int)c)).ToArray());
Результат:
u0031u0032u0033
Посмотрите, как это работает онлайн: ideone
В .NET 4.0 вы можете опустить вызов ToArray
.
Ответ №2:
string ans = Regex.Replace(s, ".", m => String.Format(@"u{0:x4}", (int)m.Value[0]));