PHP脚本中POST方法中的塞尔维亚拉丁字符

时间:2013-08-20 17:07:44

标签: php android character-encoding

我在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);
}
?>  

1 个答案:

答案 0 :(得分:0)

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

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

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

然后,除非您想在页面中使用&eacute;这样的内容,否则您需要使用例如htmlentities_decode(又名{{1}将文本解码为之前的格式我认为两者都有效。)

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