В чем подвох?

Discussion in 'Вопросы новичков' started by Maksim, Mar 20, 2017.

Tags:
  1. Maksim

    Maksim Новичок

    Joined:
    Dec 11, 2014
    Messages:
    4
    Likes Received:
    0
    Всем привет! Второй день не могу понять, в чем дело. Вот 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;

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

    Dimionix Moderator

    Joined:
    Apr 9, 2011
    Messages:
    2,542
    Likes Received:
    1,825
    Code (csharp):
    1. string str = project.Variables["Text"].Value;
    2. return Regex.Unescape(str);
    или
    Code (csharp):
    1. string str = project.Variables["Text"].Value;
    2. Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
    3. return reg.Replace(str, delegate(Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); });
     
    redman and Maksim like this.
  3. Maksim

    Maksim Новичок

    Joined:
    Dec 11, 2014
    Messages:
    4
    Likes Received:
    0
    Спасибо огромное! Оба варианта работают)
     

Пользователи просматривающие тему (Пользователей: 0, Гостей: 0)