В чем подвох?

Maksim

Новичок
Регистрация
11.12.2014
Сообщения
4
Благодарностей
0
Баллы
1
Всем привет! Второй день не могу понять, в чем дело. Вот 2 примера:

==========1==============
string str = "\u0421 \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a\u043e\u043c \u0432\u0430\u0441,\u00a0*|FNAME|*! \u0421 8 \u043c\u0430\u0440\u0442\u0430!\u00a0\u2728";
Encoding srcEncodingFormat = Encoding.UTF8;
Encoding dstEncodingFormat = Encoding.GetEncoding("UTF-8");//здесь вставляем кодировку
byte [] originalByteString = srcEncodingFormat.GetBytes(str);
byte [] convertedByteString = Encoding.Convert(srcEncodingFormat,
dstEncodingFormat, originalByteString);
string finalString = dstEncodingFormat.GetString(convertedByteString);
return finalString;

==========2==============
string str = project.Variables["tema_pisma"].Value; //в переменной tema_pisma тот же текст, что и в примере выше, точно такой же
Encoding srcEncodingFormat = Encoding.UTF8;
Encoding dstEncodingFormat = Encoding.GetEncoding("UTF-8");//здесь вставляем кодировку
byte [] originalByteString = srcEncodingFormat.GetBytes(str);
byte [] convertedByteString = Encoding.Convert(srcEncodingFormat,
dstEncodingFormat, originalByteString);
string finalString = dstEncodingFormat.GetString(convertedByteString);
return finalString;

Первый код выдает на выходе человечью строку, второй выдает то же, что и на входе. В чем ошибка? Что не так?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
C#:
string str = project.Variables["Text"].Value;
return Regex.Unescape(str);
или
C#:
string str = project.Variables["Text"].Value;
Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
return reg.Replace(str, delegate(Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); });
 

Maksim

Новичок
Регистрация
11.12.2014
Сообщения
4
Благодарностей
0
Баллы
1
Спасибо огромное! Оба варианта работают)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)