0

我在 mysql 数据库中从 android 应用程序插入塞尔维亚拉丁字符时遇到问题。而不是č, ć, š它显示?, ? , ?

手动我可以在数据库中插入这些字符,但不能从应用程序中插入这些字符。

任何帮助,将不胜感激!

这是我给出的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);
}
?>  
4

1 回答 1

0

PHP应该不是问题。您可以尝试该功能utf8_encode,但通常它是不必要的,并且它可能不起作用。您需要做的就是确保您网站的每个部分都具有相同的字符编码,并且该字符编码支持您打算使用的每个字符。

通常和最简单的方法是使用 UTF-8(我认为 MySQL 将其称为 utf8_unicode_ci),没有 BOM,因为这偶尔会导致问题(某些软件将此 ANSI 称为 UTF-8)。因此,请确保每个 HTML/PHP 页面,甚至是您的 JS 和 CSS,以及您的整个数据库结构,都是 UTF-8 格式。

如果您的结构太重而无法四处转换并转换所有内容,那么您唯一的解决方案就是“老式”。在将任何内容保存到数据库之前,您需要将所有内容编码为非常编码类型安全的形式,例如使用htmlentities.

然后,除非您想最终得到类似&eacute;页面中的内容,否则您需要将文本解码为其以前的形式,例如使用htmlentities_decode(又名html_entity_decode,我认为两者都有效)。

然而,这是一个创可贴。很少有正当的理由不总是在开始之前确保一切都在 UTF-8 中。将来总是这样做。

于 2013-08-20T17:38:45.090 回答