variable json_numeric_check json_encode funcion constantes array php json

php - json_numeric_check - Función json_encode: caracteres especiales



php json_numeric_check (6)

Para solucionar el problema del personaje especial solo tienes que hacer 2 cosas

1. mysql_set_charset(''utf8''); // establece esta línea en la parte superior de la página en la que está usando json.

  1. Si está guardando datos json en la base de datos, asegúrese de que la intercalación de columnas en particular esté configurada en " latin1_swedish_ci ".

Los elementos de una matriz que contiene caracteres especiales se convierten a cadenas vacías cuando se codifica la matriz con json_encode:

$arr = array ( "funds" => "ComStage STOXX®Europe 600 Techn NR ETF", "time"=>....); $json = json_encode($arr);

Después de la codificación JSON, el elemento [fondos] es nulo. Sucede solo con caracteres especiales (derechos de autor, marca registrada, etc.) como los de "ComStage STOXX®Europe 600 Techn NR ETF".

¿Alguna sugerencia?

Gracias

ACTUALIZACIÓN: Esto es lo que resolvió el problema antes de poblar la matriz (todos los nombres se toman de la base de datos):

$mysqli->query("SET NAMES ''utf8''");


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);


Su entrada debe codificarse 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 son utf8 obtendrá 0 como valor de retorno.

Desde 5.5.0 El valor de retorno en la falla se cambió de cadena nula a FALSO.


debe agregar charset = UTF-8 en metaetiqueta y usar json_encode para caracteres especiales

$json = json_encode($arr);

La función json_encode convierte caracteres especiales en el estándar UTF8


deberías usar este código:

$json = json_encode(array_map(''utf8_encode'', $arr))

La función array_map convierte caracteres especiales en el estándar UTF8


http://www.php.net/manual/en/function.json-encode.php

Todos los datos de cadena deben estar codificados en UTF-8.

Por lo tanto, pruebe array_map ping utf8_encode() a su matriz antes de codificarla:

$arr = array_map(''utf8_encode'', $arr); $json = json_encode($arr); // {"funds":"ComStage STOXX/u00c2/u00aeEurope 600 Techn NR ETF"}

Como referencia, eche un vistazo a las diferencias entre los tres ejemplos en este violín . El primero no usa codificación de caracteres, el segundo usa htmlentities y el tercero usa utf8_encode , todos ellos arrojan resultados diferentes.

Para coherencia, debe usar utf8_encode() .

Documentos