Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1017

[Удален]  
Money_Maker:
подскажите пожалуйста имеются вот такие данные <td colspan=\"8\" class=\"theDay\">\u0421\u0440\u0435\u0434\u0430, \u0410\u043f\u0440\u0435\u043b\u044c 20, 2016<\/td>\n  в формате UTF-8 

я правильно понимаю что что бы получить из них русский язык нужно перевести в ANSI то есть в CP_ACP ? 

делаю это так  string ttt =CharArrayToString(RESULT,0,CP_ACP); и ничего не меняется только данные получаются в переменной string
сохранение в файл под CP_ACP тоже не даёт результат.
100 % я что то делаю не так . онлайн декодер правильно переводит . итог такой: heDay\">Среда, Апрель 20, 2016<\/td>\n  (ещё при перекодировании из UTF-8 используется пост фильтр uurlencoded) 
 ВОПРОС как это сделать на MQL?
https://forum.mql4.com/ru/67441
 
Print(CharArrayToString(RESULT));
 перекодировки не происходит... ( я уже так пробывал .. я вроде что то похожее нашёл ...  https://forum.mql4.com/ru/18476

#import "kernel32.dll"
   int WideCharToMultiByte(int CodePage, int dwFlags, int &lpWideCharStr[], int cchWideChar, string lpMultiByteStr, int cbMultiByte, 
                           int lpDefaultChar, int lpUsedDefaultChar);
#import

пока правда не сработало ... но похоже на то что нужно, или не то? 
 
подскажите пожалуйста как можно программно перекодировать данные как на картинке (кадабры в буквы русские)?  Куда копать  в каком направление(?


 
[Удален]  
Money_Maker:
подскажите пожалуйста как можно программно перекодировать данные как на картинке (кадабры в буквы русские)?  Куда копать  в каком направление(?


 
Если не ошибаюсь, то это base64, его программно можно перекодировать только в PHP, или писать свою функцию на MQ
 
спасибо, уже разные варианты думал от 
1 скачивание с учётом кодировки 
2 скачивание страницы после запроса в брозере то она нормальная отображается 
3 разные функции перекодировать из WinDLL или C++ 
4 сейчас пришёл что я подберу для каждой буквы код и буду по нему  раскодировать (то есть собственная функция)


хорошо а как написать в коде MQL например вот это   "\u0430"

выдаёт предупреждение'u' - unrecognized character escape sequence

[Удален]  
Money_Maker:
спасибо, уже разные варианты думал от 
1 скачивание с учётом кодировки 
2 скачивание страницы после запроса в брозере то она нормальная отображается 
3 разные функции перекодировать из WinDLL или C++ 
4 сейчас пришёл что я подберу для каждой буквы код и буду по нему  раскодировать (то есть собственная функция)


хорошо а как написать в коде MQL например вот это   "\u0430"

выдаёт предупреждение'u' - unrecognized character escape sequence

Вот на PHP, по её принципу делаете на MQ

function conv($str)
{
$uot = '';
$unicodePoints = array( '\u0410','\u0411','\u0412','\u0413',
'\u0414','\u0415','\u0416','\u0417',
'\u0418','\u0419','\u041A','\u041B',
'\u041C','\u041D','\u041E','\u041F',
'\u0420','\u0421','\u0422','\u0423',
'\u0424','\u0425','\u0426','\u0427',
'\u0428','\u0429','\u042A','\u042B',
'\u042C','\u042D','\u042E','\u042F',
'\u0430','\u0431','\u0432','\u0433',
'\u0434','\u0435','\u0436','\u0437',
'\u0438','\u0439','\u043A','\u043B',
'\u043C','\u043D','\u043E','\u043F',
'\u0440','\u0441','\u0442','\u0443',
'\u0444','\u0445','\u0446','\u0447',
'\u0448','\u0449','\u044A','\u044B',
'\u044C','\u044D','\u044E','\u044F');
$hexView = array(   'd090','d091','d092','d093',
'd094','d095','d096','d097',
'd098','d099','d09a','d09b',
'd09c','d09d','d09e','d09f',
'd0a0','d0a1','d0a2','d0a3',
'd0a4','d0a5','d0a6','d0a7',
'd0a8','d0a9','d0aa','d0ab',
'd0ac','d0ad','d0ae','d0af',
'd0b0','d0b1','d0b2','d0b3',
'd0b4','d0b5','d0b6','d0b7',
'd0b8','d0b9','d0ba','d0bb',
'd0bc','d0bd','d0be','d0bf',
'd180','d181','d182','d183',
'd184','d185','d186','d187',
'd188','d189','d18a','d18b',
'd18c','d18d','d18e','d18f' );
for($i=0; $i < strlen( $str ); $i++)
{
if(bin2hex($str{$i}) >= 'd0' && bin2hex($str{$i}) <= 'd1')
{
$uot .= bin2hex($str{$i}).bin2hex($str{$i+1});
$i++;
}
elseif(bin2hex($str{$i}) <= '7e')
{
$uot .= '\u00'.bin2hex($str{$i});
}
else $uot .= htmlentities($str{$i},ENT_QUOTES,'UTF-8');
}
return str_replace($hexView,$unicodePoints, $uot);
}

 

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

 
Trader76:

Вот на PHP, по её принципу делаете на MQ

 

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

спасибо большое так будет быстрее, я тоже поэтому принципу решил "липить" особое спасибо за коды символов теперь их искать не надо будет.
[Удален]  
Money_Maker:
спасибо большое так будет быстрее, я тоже поэтому принципу решил "липить" особое спасибо за коды символов теперь их искать не надо будет.

 StringGetChar()

StringGetCharacter()

Или это не то? 

[Удален]  
Money_Maker:
спасибо большое так будет быстрее, я тоже поэтому принципу решил "липить" особое спасибо за коды символов теперь их искать не надо будет.

Я вот писал для замены коротких названий для символов, разбейте строки на буквы, и делайте замену.

string sub_symb[];
ushort u_sep=StringGetCharacter(" ",0);
string SymbolArr[]={
//-------------------- в конце ставить запятую и писать через пробел
// СЕЛЬХОЗ.ПРОДУКЦИЯ
 "Молоко DC",
 "Корм GF",
 "Свинина HE",
 "Рогатый_скот LE",
 "Кукуруза ZC",
 "Соевое_масло ZL",
 "Соевая_мука ZM",
 "Соевые_бобы ZS",
 "Пшеница ZW",
// ЭНЕРГИЯ
 "#BRENT CL",
 "Мазут HO",
 "Газ NG",
 "Газ(мини) QG",
 "Нефть_WTI_(мини) QM",
 "Бензин RB",
// ИНДЕКСЫ
 "S&P_(мини) ES",
 "NASDAQ_(мини) NQ",
 "S&P_500 SP",
 "#DJI30 YM",
 "#DAX30 FDAX",
// МЕТАЛЛЫ
 "Золото GC",
 "Медь HG",
 "Палладий PA",
 "Платина PL",
 "Серебро SI",
 "IndexUSD DX",

//+---------------------------------------------------------------------------------------------+
};

string SubSymbols(string CurSymb)
 {
 for(int i=0; i<ArraySize(SymbolArr); i++)
  {
   StringSplit(SymbolArr[i],u_sep,sub_symb);
   if(CurSymb==sub_symb[0])
    {
     return(sub_symb[1]);
    }
  }
//-
 return(_Symbol);
 }
 
eevviill:

 StringGetChar()

StringGetCharacter()

Или это не то? 

не не оно .. смысл разкодировки такой: каждой русской букве присвоено значение например "а" это такая комбинация \u0430

что бы конвертировать нужно определять какой букве принадлежит то или иное значение а потом заменять эти значения буквами ... вроде можно через KernelDll но этот путь очень мутный по крайней мере у меня не получилось, инфы мало на этот счёт и похоже на то что это всё же не совсем то .. а вот своя функция это единственно простой выход на мой взгляд