Кибор » Кибор - Интегрированная среда разработки ботов » Предложения по программе » strhextodec

Страниц (1): [1]
 

1. Zireael - 08 Февраля, 2022 - 04:57:33 - перейти к сообщению
Добавить конвертацию юникода.
 Цитата:
\u041f\u0440\u0438\u0432\u0435\u0442

CODE:
#define CP_ACP 0
external(INT, "WideCharToMultiByte", "WideCharToMultiByte", "Kernel32.dll");


messagebox(strhextodec2("Hello \u041f\u0440\u0438\u0432\u0435\u0442"));



function strhextodec2(string Text)
{
string result, num[25000];
char wchar[4], tchar[1];
int k = regexsearch(25000, #num[0], Text, "\\u[a-fA-F\d]{4}|.");
for(int i=0; i<k; i++)
{
if(size(num[i])>1)
{
strhextodec(CONVERT_TI, num[i], "\u", #num[i]);
writeaddress(formatsn(num[i]), address(#wchar[0]));
WideCharToMultiByte(CP_ACP, 0, address(#wchar[0]), 1, address(#tchar[0]), sizearray(tchar), 0, 0);
result=result+format(#tchar[0], 1);
}
else result = result + num[i];
}
return result;
}
2. Kibor - 15 Февраля, 2022 - 08:43:16 - перейти к сообщению
Версия 6.06 Доработка strhextodec - Универсальный конвертер текста

Поскольку функция универсальная, она позволяет любую идентификацию UTF16 представления:

Участки записи UTF16 идентифицируются по переднему флагу:
CODE:
string A="Hello \u041f\u0440\u0438\u0432\u0435\u0442";
string B;
strhextodec(CONVERT_U16, A, "\u", #B);
messagebox (B);


Участки записи UTF16 идентифицируются по заднему флагу:
CODE:
string A="Hello 041f/U0440/U0438/U0432/U0435/U0442/U";
string B;
strhextodec(CONVERT_U16, A, #B, "/U");
messagebox (B);


Участки записи UTF16 идентифицируются по переднему и заднему флагу:
CODE:
string A="Текст \u041f/U\u0440/U\u0438/U\u0432/U\u0435/U\u0442/U";
string B;
strhextodec(CONVERT_U16, A, "\u", #B, "/U");
messagebox (B);


Участки записи UTF16 идентифицируются по совокупности символов участвующих в текстовом представление 16 ричной записи:
CODE:
string A="Текст П440и0432е0000442";
string B;
strhextodec(CONVERT_U16, A, #B);
messagebox (B);

Powered by ExBB FM 1.0 Final