Solución:
El manual de json_encode especifica esto:
Todos los datos de cadena deben estar codificados en UTF-8.
Por lo tanto, intente array_map
silbido utf8_encode()
a su matriz antes de codificarla:
$arr = array_map('utf8_encode', $arr);
$json = json_encode($arr);
// {"funds":"ComStage STOXXu00c2u00aeEurope 600 Techn NR ETF"}
Como referencia, observe las diferencias entre los tres ejemplos de este violín. El primero no usa codificación de caracteres, el segundo usa htmlentities
y el tercero usa utf8_encode
– todos devuelven resultados diferentes.
Para mayor consistencia, debe usar utf8_encode()
.
Docs
- json_encode ()
- utf8_encode ()
- array_map ()
Su entrada debe estar codificada como UTF-8 o ISO-8859-1.
http://www.php.net/manual/en/function.json-encode.php
Porque si intenta convertir una matriz de caracteres que no sean utf8, obtendrá 0 como valor de retorno.
Desde 5.5.0 El valor de retorno en caso de falla se cambió de cadena nula a FALSO.
Para mí, funciona de esta manera:
# Creating the ARRAY from Result.
$array=array();
while($row = $result->fetch_array(MYSQL_ASSOC))
{
# Converting each column to UTF8
$row = array_map('utf8_encode', $row);
array_push($array,$row);
}
json_encode($array);