【问题标题】:Json encode php fileJson 编码 php 文件
【发布时间】:2012-05-11 20:18:10
【问题描述】:

我想从 mysql 数据库中打印 Json 数据,但数据在浏览器中显示不正确。我正在输入带重音符号的名称,例如:José 或 L'Alcudia(它们是西班牙名称) 我有两个 php 文件,一个用于将数据插入数据库,另一个用于返回 JSON 数据。 另一方面,我有一个允许我输入数据的 html 文件(一个表单)。

//HTML FILE
<!DOCTYPE html>
<html lang="es">

<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head>
<header></header>
<body>
<form id="formulario" name="formulario" method="post" action="insertar_persona.php" enctype="multipart/form-data">  
    <p>Nombre:</p>
    <input type="text" name="nombre" value="nombre" />      
    <br/><br/>
    <input type="submit" id="insertar" name="insertar" value="Insertar"/>

</form>
</body>
</html>



//INSERT PHP FILE

<?php header ('Content-type: text/html; charset=utf-8');
//Credenciales de la BBDD
$db = "prueba";
$host = 'localhost';
$username = "dpbataller";
$password = '1234';

//Conectamos al servidor de la Base de datos
$link = mysql_connect($host,$username,$password) or die("No se puede conectar");
//Seleccionamos la BBDD
@mysql_select_db($db) or die ("No se ha podido seleccionar a la base de datos");
//Lanzamos la consulta
$consulta = mysql_query("INSERT INTO personas (id,nombre) VALUES ('','$_POST[nombre]')");
?>



//GET JSON DATA
<?php header ('Content-type: text/html; charset=utf-8');
//Credenciales de la BBDD
$db = "prueba";
$host = 'localhost';
$username = "dpbataller";
$password = '1234';
//Conectamos al servidor de la Base de datos
$link = mysql_connect($host,$username,$password) or die("No se puede conectar");
//Seleccionamos la BBDD
mysql_select_db($db) or die ("No se ha podido seleccionar a la base de datos");
//Lanzamos la consulta 
$consulta = mysql_query("SELECT id,nombre from personas");
//Creamos un array para almacenar los resultados
$filas = array();
//Agregamos las filas  devueltas al array
while ($r = mysql_fetch_assoc($consulta)) { 
$filas[] = $r;  

}
//Devolvemos el resultado
echo json_encode($filas);
?>

当我尝试通过浏览器显示数据时显示:

[{"Id": "1", "name": "Jos \ u00e9"}]

数据库和表的编码为utf-8_spanish_ci

会发生什么?有人帮帮我吗?

【问题讨论】:

    标签: php json encode


    【解决方案1】:

    尝试将内容类型更改为:application/json

    <?php header ('Content-type: application/json; charset=utf-8');
    

    【讨论】:

    • 不行,还是出现[{"id": "1", "name": "Jos\u00e9"}, {"id": "2", "name": "asd"}]
    • 我认为它是原始的 json 字符串。您是否尝试解码客户端?看看 jQuery.parseJSON
    【解决方案2】:

    您可以使用这些功能:

    function encodeIt($array) { 
      return json_encode(array_map('base64_encode', $array));
    }
    
    function decodeIt($string) {
      return array_map('base64_decode', json_decode($string));
    }
    

    【讨论】:

    • 对不起,我是 php 编程新手,不太明白我把函数放在哪里以及我传递的参数是什么。
    • 在脚本的顶部包含这些函数,并分别使用它们代替 json_encode 和 json_decode。
    猜你喜欢
    • 2017-02-17
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    相关资源
    最近更新 更多