Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1017

 
Podrían decirme los datos<td colspan="8\" class="theDay\">cu0421\u0440\u0435\u0434\u0430, \u0410\u043f\u0440\u0435\u043b\u044c 20, 2016</td> en formato UTF-8

¿He entendido bien que hay que convertir el ruso a ANSI, es decir, a CP_ACP?

Lo hago así string ttt =CharArrayToString(RESULT,0,CP_ACP); No cambia nada, sólo se almacenan los datos en la variable string
Guardar en un archivo bajo CP_ACP tampoco funciona.
Estoy haciendo algo mal. La salida es heDay\">Miércoles, 20 de abril de 2016</td> (también he utilizado el filtro uurlencoded post al convertir de UTF-8)
LA PREGUNTA es ¿cómo hacerlo en MQL?
 
Money_Maker:
Podrían decirme los datos<td colspan="8\" class="theDay\">cu0421\u0440\u0435\u0434\u0430, \u0410\u043f\u0440\u0435\u043b\u044c 20, 2016</td> en formato UTF-8

¿He entendido bien que hay que convertir el ruso a ANSI, es decir, a CP_ACP?

Lo hago así string ttt =CharArrayToString(RESULT,0,CP_ACP); No cambia nada, sólo se almacenan los datos en la variable string
Guardar en un archivo bajo CP_ACP tampoco funciona.
Estoy haciendo algo mal. El decodificador en línea traduce correctamente. el resultado es: heDay\">Miércoles, 20 de abril de 2016</td>\n
La cuestión es cómo hacerlo en MQL.
Cómo lo sabes: escribe. Tengo un problema similar.
 
Money_Maker:
Podrían decirme los datos<td colspan="8\" class="theDay\">cu0421\u0440\u0435\u0434\u0430, \u0410\u043f\u0440\u0435\u043b\u044c 20, 2016</td> en formato UTF-8

¿He entendido bien que hay que convertir el ruso a ANSI, es decir, a CP_ACP?

Lo hago así string ttt =CharArrayToString(RESULT,0,CP_ACP); No cambia nada, sólo se almacenan los datos en la variable string
Guardar en un archivo bajo CP_ACP tampoco funciona.
Estoy haciendo algo mal. La salida es heDay\">Miércoles, 20 de abril de 2016</td> (también he utilizado el filtro uurlencoded post al convertir de UTF-8)
PREGUNTA ¿cómo hacerlo en MQL?
https://forum.mql4.com/ru/67441
 
eevviill:
https://forum.mql4.com/ru/67441
Print(CharArrayToString(RESULT));
no se produce ninguna recodificación... ( Ya lo he intentado... creo que he encontrado algo parecido... 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

Todavía no ha funcionado... pero parece ser el correcto, ¿o está equivocado?
 
¿Podríais decirme cómo convertir los datos que aparecen en la imagen (cadabras en letras rusas)? ¿Dónde cavar y en qué dirección?


 
Money_Maker:
¿Podría decirme cómo convertir los datos que aparecen en la imagen (cadabras en letras rusas)? ¿Dónde cavar y en qué dirección?



Si no me equivoco, es base64, se puede recodificar programáticamente sólo en PHP, o escribir su propia función en MQ
 
Gracias, ya he pensado en diferentes opciones de
1 descarga teniendo en cuenta la codificación
2 página de descarga después de la solicitud en el navegador, se mostrará bien
3 funciones diferentes convertidas desde WinDLL o C++
4 ahora he llegado a recoger para cada letra un código y utilizarlo para descifrar (es decir, función propia)


OK, ¿cómo escribo este "\u0430" en el código MQL?

Recibo una advertencia 'u' - secuencia de escape de caracteres no reconocida

 
Money_Maker:
Gracias, ya pensé en diferentes opciones de
1 descarga teniendo en cuenta la codificación
2 página de descarga después de la solicitud en el navegador, se mostrará bien.
3 funciones diferentes para convertir desde WinDLL o C++
4 ahora vienen que voy a recoger para cada letra un código y utilizarlo para decodificar (es decir, su propia función)


OK, ¿cómo escribo este "\u0430" en el código MQL?

Obtengo una advertencia de 'u' - secuencia de escape de caracteres no reconocida

Aquí en PHP, siguiendo su principio de hacerlo en 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);
}

La idea es que se descomponga la cadena en caracteres y se haga un reemplazo carácter por carácter con el carácter correcto cuando coincida con la matriz.

 
Trader76:

Aquí en PHP, siguiendo su principio de hacerlo en MQ

La idea es que rompa la cadena en caracteres y haga una sustitución carácter por carácter con el carácter correcto cuando coincida con la matriz.

muchas gracias será más rápido, yo también por lo que el principio decidió "lippy" gracias especiales para los códigos de caracteres ahora no tendrán que buscar para ellos.
 
Money_Maker:
Muchas gracias será más rápido, por eso también decidí "lamer" el principio especial gracias por los códigos de caracteres ahora no tendré que buscarlos.

StringGetChar()

StringGetChar()

¿O está mal?