[Help] Преобразовать UTF-8 в unicode (html-код)

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
917
Баллы
113
Всем привет.
Задача преобразовать переменную с текстом в html-код
Как я понимаю html-код (пример символов - это ) это разновидность юникода (пример символов - \u044d\u0442\u043).

Задача UTF-8 конвертнуть в html-код.
Если не получится конвертнуть в html-код, то просто в unicode тоже пойдет.

Перелопатил кучу вариантов. В результате либо иероглифы, либо текст в томже виде, что и подавал.

Хелп. Предполагаю, что что-то понимаю не так, поэтому копаю не туда.
 
Последнее редактирование:

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
C#:
// Закодировать строку в Unicode вида \uXXX
string str = project.Variables["Text"].Value;
StringBuilder sb = new StringBuilder();
if (!string.IsNullOrEmpty(str))
{
    for (int i = 0; i < str.Length; i++)
    {
        sb.Append("\\u"); // или \\u0
        sb.Append(((int)str[i]).ToString("x"));
    }
    return sb;
}
И тут: http://zennolab.com/discussion/threads/perekodirovat-stroku-v-junikod.28459/
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
C#:
// Закодировать строку в Unicode вида \uXXX
string str = project.Variables["Text"].Value;
StringBuilder sb = new StringBuilder();
if (!string.IsNullOrEmpty(str))
{
    for (int i = 0; i < str.Length; i++)
    {
        sb.Append("\\u"); // или \\u0
        sb.Append(((int)str[i]).ToString("x"));
    }
    return sb;
}
И тут: http://zennolab.com/discussion/threads/perekodirovat-stroku-v-junikod.28459/
А есть наоборот сниппет с &#1101;&#1090;&#1086; на обычный? А то столкнулся и не нашел, вроде это utf-7.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
917
Баллы
113
Dimionix,спасибо!)

Код:
string str = project.Variables["Text"].Value;
return System.Net.WebUtility.HtmlEncode(str);
Как я понимаю это должно преобразовывать в формат : ( &#1101;&#1090;&#1086; )

Но не работает. На выходе текст в том же виде, что и на входе.
В чем тут некоректность реализации? И как все же перевести в этот формат? (Уже знаний ради)
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
Как я понимаю это должно преобразовывать в формат : ( &#1101;&#1090;&#1086; )

Но не работает. На выходе текст в том же виде, что и на входе.
В чем тут некоректность реализации? И как все же перевести в этот формат? (Уже знаний ради)
Тоже тестировал этот метод и тоже не разобрался как получить строку в таком формате. google не помог((. Может TextWriter за это отвечает:bk:
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Да, не пашет почему то. Вот еще пример 'SLVb&#111;dy' + '&#64;' + 'y&#97;nd&#101;x' + '&#46;' + 'r&#117;' мыло закодировано SLVbody{собака}yandex.ru . Вот тут гадает, но какой формат именно хз,
Может есть на с# декодер.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
Да, не пашет почему то. Вот еще пример 'SLVb&#111;dy' + '&#64;' + 'y&#97;nd&#101;x' + '&#46;' + 'r&#117;' мыло закодировано SLVbody{собака}yandex.ru . Вот тут гадает, но какой формат именно хз, Может есть на с# декодер.
Всё нормально разгадывает этот код http://zennolab.com/discussion/threads/help-preobrazovat-utf-8-v-unicode-html-kod.28505/#post-204193, просто нужно избавиться от лишних символов при помощи замены.
C#:
string str = project.Variables["Text"].Value;
return System.Net.WebUtility.HtmlDecode(str)
        .Replace("' + '", "")
        .Replace("'", "");
 
  • Спасибо
Реакции: phoenixs и samsonnn

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
И как все же перевести в этот формат? (Уже знаний ради)
Вроде, нашел решение
C#:
string str = project.Variables["Text"].Value;
string result = string.Empty;
for (int i = 0; i < str.Length; i++)
    result += "&#" + (int)str.ToCharArray()[i] + ";";
return result;
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
917
Баллы
113

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
C#:
// Закодировать строку в Unicode вида \uXXX
string str = project.Variables["Text"].Value;
StringBuilder sb = new StringBuilder();
if (!string.IsNullOrEmpty(str))
{
    for (int i = 0; i < str.Length; i++)
    {
        sb.Append("\\u"); // или \\u0
        sb.Append(((int)str[i]).ToString("x"));
    }
    return sb;
}
И тут: http://zennolab.com/discussion/threads/perekodirovat-stroku-v-junikod.28459/
Твой вариант не совсем рабочий, по ссылке все гут.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
Твой вариант не совсем рабочий
Помню, что специально зачем-то так писал, но сейчас уже не скажу.
А вообще, либо в седьмой строке по комментарию либо в девятой x заменить на x4
 

demien02613

Client
Регистрация
29.07.2021
Сообщения
23
Благодарностей
5
Баллы
3
добрый день,
подниму старую тему....
нужно перекодировать Unicode in Utf
юзаю такой код:
C#:
string str0="";
    //str0 = "\u0418\u0441\u0430\u0435\u0432\u0430 \u0421\u0432\u0435\u0442\u043b\u0430\u043d\u0430";
      str0 = project.Variables["Command_Text"].Value;
string output =  System.Net.WebUtility.HtmlDecode(str0);

project.SendInfoToLog(output,true);
project.Variables["Command_Text"].Value=output;
и вот какая штука,
если переменную str0 юзать из кода, то все декодирует отлчино,
а если брать этот же юникод из зенки, то перекодирования не происходит...

пробовал разные способы кодировать, результат один и тот же.

Подскажите гуру, что не так с переменной, когда она тянется из project.Variables ???




C#:
string str = project.Variables["Text"].Value;
return System.Net.WebUtility.HtmlDecode(str);
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
Подскажите гуру, что не так с переменной, когда она тянется из project.Variables ???
Все просто.
С переменной все хорошо, там лежит текст. А функция HtmlDecode не занимается такими символами как "\u0418" , по одной простой причине, что это не кодированный Html , а Unicode
Единственная причина почему у тебя код со строкой str0 = "\u0418\u0441\u0430\u0435\u0432\u0430 \u0421\u0432\u0435\u0442\u043b\u0430\u043d\u0430";
возвращает верный результат, так это то что сам компилятор зенки преобразует эти символы в правильные, еще до запуска кубика.

вот пример
string str0 = "\u0418\u0441\u0430\u0435\u0432\u0430 \u0421\u0432\u0435\u0442\u043b\u0430\u043d\u0430";
return str0;

и если убрать влияние компилятора, записав строку как ТЕКСТ
string str0 = @"\u0418\u0441\u0430\u0435\u0432\u0430 \u0421\u0432\u0435\u0442\u043b\u0430\u043d\u0430";
return str0;

Выполни и сравни результат.
 
  • Спасибо
Реакции: demien02613

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113

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