嗨,我正在寻求帮助,因为我已经做了很多事情来正确显示数据库中的数据。我有一个设备,它在 PHP 脚本的帮助下将数据插入 MySQL 数据库。所有数据都正确显示,但特殊数据(Ñ、ó、é 等...)。我在服务器和设备之间使用 JSON。我做了很多改变,这些都是我得到的。首先它只显示一个“?” 而不是字符 (I?aki)。后来它显示整个字段为空,最后它没有显示任何特殊字符被写入。我做了以下更改,但没有成功: 在 PHP 脚本中:
header("Content-Type: text/html;charset=utf-8");
mysql_query("SET NAMES 'utf8'");
此外,在数据库中,字符串字段位于 utf8_spanish_ci 中,表排序规则位于 utf_unicode_ci 中。
我不知道我还能做什么。如果我在数据库中插入一个新行,我可以在 phpmyadmin 和我的设备中完美地看到它。当设备将参数发送到服务器时会发生上述问题,并且我认为 php 脚本不理解特殊字符。
编辑:这是上面解释的 PHP 脚本的代码:
<?php
header("Content-Type: text/html;charset=utf-8");
// array for JSON response
$response = array();
// check for required fields
if (isset($_POST['nserie']) && isset($_POST['dni']) && isset($_POST['nombre']) && isset($_POST['bateria'])) {
$nserie = $_POST['nserie'];
$dni = $_POST['dni'];
$nombre = $_POST['nombre'];
$bateria = $_POST['bateria'];
// include db connect class
require_once __DIR__ . '/db_connect.php';
// connecting to db
$db = new DB_CONNECT();
// mysql inserting a new row
$result = mysql_query("INSERT INTO candidatos(nserie, dni, nombre, bateria) VALUES('$nserie', '$dni', '$nombre', '$bateria')");
$insertedId = mysql_insert_id();
// check if row inserted or not
if ($result) {
// successfully inserted into database
$response["success"] = 1;
$response["message"] = $nombre;
$response["id"] = mysql_insert_id();
// echoing JSON response
echo json_encode($response);
} else {
// failed to insert row
$response["success"] = 0;
$response["message"] = "Oops! An error occurred.";
// echoing JSON response
echo json_encode($response);
echo json_last_error();
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
// echoing JSON response
echo json_encode($response);
}
?>
谢谢
已解决:终于得到了解决方法,错误出在Android应用中,没有设置utf-8。这是更改:
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
感谢阿特里的解释