rta: La versión de g3w es 2.9.0…
en full.twig y pipe.twig ya había hecho estos cambios:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
...
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
En bootstrap.php ya había reemplazado ISO-8859-1 por:
kernel::proyecto()->set_encoding('UTF-8');
En func_util.php (no recuerdo si array_a_utf8 viene originalmente o si es un agregado mio):
function array_a_utf8(&$datos){
if (is_string($datos)) {
// agregue este if para que no se recodifique a utf8
if(mb_detect_encoding($datos) != 'UTF-8') {
$datos = utf8_encode($datos);
}
} else if (is_array($datos)) {
foreach ($datos as &$value) {
array_a_utf8($value);
}
unset($value);
} else if (is_object($datos)) {
$vars = array_keys(get_object_vars($datos));
foreach ($vars as $var) {
array_a_utf8($datos->$var);
}
}
return $datos;
}
En php.ini tengo establecido default_charset = “UTF-8” y con eso, según la documentación de php, ya se afecta a la configuración por defecto de mbstring
Lo que sí, activé mbstring.encoding_translation=On porque esa opción la tenía deshabilitada.
PERO a pesar de todo sigue habiendo caracteres inválidos…
Noté que todos los casos en que se ve mal, se corresponde con textos generados desde javascript. Siempre comienza con: kernel.renderer.on_arrival(
Y el problema es que el texto que entra como origen esta mal codificado… no se si se lo codifica 2 veces seguidas a utf8 o si es otro problema. Pero lo cierto es que los caracteres especiales los toma byte a byte.
Dejo un ejemplo de como queda:
<script type='text/javascript'>kernel.renderer.on_arrival({"css":["\/rs.php\/__ignored__\/acceso\/login\/default.css?ns=siu"],"js":["\/rs.php\/acceso\/login\/pagelet_login.js"],"op":"acceso","info":{"id":"login","visible":"1","estado":"inicial","mensajes":[]},"content":"<h2>Ingres? tus datos<\/h2><form method=\"post\" action=\"http:\/\/docentes.unlm.edu.ar\/acceso?auth=form\" id=\"guarani_form_login\"><div class=\"control-group\"><label class=\"control-label\" for=\"usuario\">Usuario<\/label><div class=\"controls\"><input id=\"usuario\" name=\"usuario\" type=\"text\" value=\"\" maxlength=\"20\"\/><\><\><div class=\"control-group\"><label class=\"control-label\" for=\"password\">Clave<\/label><div class=\"controls\"><input id=\"password\" name=\"password\" type=\"password\" value=\"\" maxlength=\"20\"\/><\><\><div class=\"control-group\"><div class=\"controls\"><input id=\"recaptcha_challenge_field\" name=\"recaptcha_challenge_field\" type=\"hidden\" value=\"\" \/><input id=\"recaptcha_response_field\" name=\"recaptcha_response_field\" type=\"hidden\" value=\"\" \/><input id=\"login\" name=\"login\" type=\"submit\" value=\"Ingresar\" class=\"btn btn-info\"\/><\><\><\/form><a href='http:\/\/docentes.unlm.edu.ar\/acceso\/recuperar'>\u00c2\u00bfOlvidaste tu contrase\u00c3\u00b1a?<BR\/>Recup\u00c3\u00a9rala usando tu email alternativo...<\/a>","clase_js":"login","tiene_archivo_js":"1"});</script><script type='text/javascript'>kernel.renderer.on_arrival({"css":["\/rs.php\/__ignored__\/acceso\/contenido_login\/default.css?ns=siu"],"js":["\/rs.php\/acceso\/contenido_login\/pagelet_contenido_login.js"],"op":"acceso","info":{"id":"contenido_login","visible":"1","estado":"inicial","mensajes":[]},"content":"<h2>SIU Guaran\u00ed<\/h2><p>Algunas de las cosas que pod\u00c3\u00a9s hacer con este sistema son:<\/p><ul><li>Imprimir listados de asistencia.<\/li><li>Imprimir tus actas de curso.<\/li><li>Cargar notas de cursadas.<\/li><li>Imprimir las actas de curso con notas.<\/li><li>Imprimir actas de final.<\/li><li>Cargar notas de finales.<\/li><li>Imprimir actas de final con notas.<\/li><li>Actualizar tus datos personales.<\/li><li>Enviar emails a todos tus alumnos.<\/li><\/ul>","clase_js":"contenido_login","tiene_archivo_js":"1"});</script><script type='text/javascript'>kernel_config.pagelet_count = 2</script>