我在mysql数据库中从android app插入塞尔维亚拉丁字符时遇到问题。而不是č, ć, š
它显示?, ? , ?
。
手动我可以在db中插入这些字符,但是从应用程序我不能。
任何帮助将不胜感激!
这是我给出的PHP
<?php
$con=mysqli_connect("xx.xx.xx.xx","xxxx","xxxx","xxxx");
mysqli_set_charset($con,"utf8");
// array for JSON response
$response = array();
// check for required fields
if (isset($_POST['NAD']) && isset($_POST['KOM'])&& isset($_POST['VR']) && isset($_POST['IDV'])){
$NAD = $_POST['NAD'];
$KOM = $_POST['KOM'];
$IDV = $_POST['IDV'];
$VR = $_POST['VR'];
$result = mysqli_query($con,"INSERT INTO komentari(id, ime, komentar,vrijeme) VALUES('$IDV', '$NAD', '$KOM','$VR')");
// check if row inserted or not
if ($result) { // successfully inserted into database
$response["success"] = 1;
$response["message"] = "";
// echoing JSON response
echo json_encode($response);
} else {
// failed to insert row
$response["success"] = 0;
$response["message"] = "Doslo je do greske";
// echoing JSON response
echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Nedostaje polje";
// echoing JSON response
echo json_encode($response);
}
?>
答案 0 :(得分:0)
PHP应该不是问题。您可以尝试使用函数utf8_encode
,但通常它是不必要的,它可能不起作用。您需要做的就是确保您网站的每个部分都具有相同的字符编码,并且字符编码支持您打算使用的每个字符。
通常和最简单的方法是使用UTF-8(我认为MySQL称之为utf8_unicode_ci),没有BOM,因为它偶尔会导致问题(某些软件将此ANSI称为UTF-8)。因此,确保每个HTML / PHP页面,甚至您的JS和CSS,以及您的整个数据库结构,都是UTF-8。
如果您的结构太重而无法转换并转换所有内容,那么您唯一的解决方案就是“老式”。在将任何内容保存到数据库之前,您需要将所有内容编码为非常符合编码类型的形式,例如使用htmlentities
。
然后,除非您想在页面中使用é
这样的内容,否则您需要使用例如htmlentities_decode
(又名{{1}将文本解码为之前的格式我认为两者都有效。)
然而,这是一个创可贴。在开始之前,并不总是确保所有内容都是UTF-8的正当理由很少。总是在将来这样做。