php - 使用波斯字符导致mysql表的每个字段插入值null
问题描述
我是新的 android 开发人员,正在开发波斯房地产 android 项目。我有一个表格,可以使用 php 文件将新房地产插入 mysqli 表。但是当我在该表格的每个字段中使用波斯字符时,它实际上会向每个字段插入空值表。但是当我使用英文字符时,它会完全插入到表中!例如,这是我从 android 发送的英文字符 json:
{"price":"5668845555","address":"ssfghhvcxdd","phoneNumber":"544585533","bedRoom":6,"describtion":"fdstghgccff","isForSale":"rent","isCommertial":"not commertial","meter":545,"image":"android.graphics.Bitmap@c10755a"}
这包括从 android 发送的波斯字符 json:
{"price":"5668845555","address":"بلاتذزییبغاتتاا","phoneNumber":"544585533","bedRoom":6,"describtion":"یباننترلبقثس","isForSale":"rent","isCommertial":"not commertial","meter":545,"image":"android.graphics.Bitmap@c10755a"}
虽然两个 json 都是完全正确的,但带有波斯字符的 json 不能正确插入到表格中!
这是我的 php 文件:
<?php
define("SERVER_NAME", "localhost");
define("USER_NAME", "root");
define("PASSWORD", "");
define("DATABASE_NAME", "mydb");
$conn = mysqli_connect(SERVER_NAME, USER_NAME, PASSWORD, DATABASE_NAME);
header("content-type: application/json;charset=utf-8");
$jsonContent = file_get_contents('php://input');
mysqli_set_charset($conn, "utf8");
utf8_encode($jsonContent);
$arrayContent = json_decode($jsonContent,true);
$price = $arrayContent["price"];
$address = $arrayContent["address"];
$phoneNumber=$arrayContent["phoneNumber"];
$image=$arrayContent["image"];
$meter=$arrayContent["meter"];
$bedRoom=$arrayContent["bedRoom"];
$isCommertial=$arrayContent["isCommertial"];
$isForSale=$arrayContent["isForSale"];
$describtion=$arrayContent["describtion"];
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO estates (price,address,phoneNumber,image,meter,bedRoom,isCommertial,isForSale,describtion)
VALUES ('$price','$address','$phoneNumber','$image','$meter','$bedRoom','$isCommertial','$isForSale','$describtion')";
if ($conn->query($sql) === TRUE) {
echo "Estate added successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
这就是这两个 json 之后 mysql 表的样子
我不得不说我所有的字段排序规则都是 utf8_persian_ci
所以你认为我的错误是什么?谢谢你
问题解决了!通过在android中使用String Formatter Class,我以正确的方式将json发送到php!
public class StringFormatter {
// convert UTF-8 to internal Java String format
public static String convertUTF8ToString(String s) {
String out = null;
try {
out = new String(s.getBytes("ISO-8859-1"), "UTF-8");
} catch (java.io.UnsupportedEncodingException e) {
return null;
}
return out;
}
// convert internal Java String format to UTF-8
public static String convertStringToUTF8(String s) {
String out = null;
try {
out = new String(s.getBytes("UTF-8"), "ISO-8859-1");
} catch (java.io.UnsupportedEncodingException e) {
return null;
}
return out;
}
}
解决方案
推荐阅读
- php - 如何在邮件功能中插入链接
- javascript - 如何将 MDC web javascript(如 MDCRipple)应用于已使用 AJAX 加载的内容
- react-native - 找不到变量:在屏幕之间导航
- modelica - 如何将 Revit 属性转移到 openmodelica?
- javascript - 在树视图 Odoo 中单击时禁用日期选择器
- sapui5 - 为什么byId找不到控件?
- eloquent - 图像不验证大小
- freebsd - libc.so 中包含哪些freebsd 版本的libdl.so sys 调用?
- html - 如何在 HTML 中使用音乐
- python - 瓶子 + gevent 并行支持