Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/12/2017, 02:37
Avatar de SirZoX
SirZoX
 
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 124
Antigüedad: 17 años, 10 meses
Puntos: 2
Respuesta: json_encode devuelve vacío desde una consulta odbc con datos

Pues parece ser que era justo eso, la base de datos no está en UTF-8
Estuve buscando varias formas de pasarlo, desde modificar la consulta SQL para que retornara los valores ya codificados a utf-8, varias funciones que lo hacían, y finalmente encontré esta solución:

Código PHP:
function utf8_encode_deep(&$input) {
    if (
is_string($input)) {
        
$input utf8_encode($input);
    } else if (
is_array($input)) {
        foreach (
$input as &$value) {
            
utf8_encode_deep($value);
        }
        
        unset(
$value);
    } else if (
is_object($input)) {
        
$vars array_keys(get_object_vars($input));
        
        foreach (
$vars as $var) {
            
utf8_encode_deep($input->$var);
        }
    }

La verdad, si lo hubiera pensado detenidamente, hubiera podido hacerla yo mismo, pero estaba cegado buscando la manera de que SQL devolviera los valores directamente con CAST o CONVERT, pero no lo conseguía.

Gracias por la idea Triby, desconocía que json_encode sólo funcionaba con UTF-8