2013-08-20 53 views
0

我有一個問題,從Android數據庫中的android應用程序插入塞爾維亞拉丁字符。它顯示?, ? , ?而不是č, ć, šPHP腳本中的POST方法中的塞爾維亞拉丁字符

手動我可以在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

您的整個渲染管道必須是utf-8。網頁,客戶端瀏覽器 - >服務器,服務器 - > php,php->數據庫,數據庫表/字段等...如果你得到'?',那麼你的字符集在某個地方會出現不匹配。 –

+0

@MarcB我不知道可能是什麼問題。數據庫在手動插入時接受它(「Insert into T1 values'ččč'」)。但從我的應用程序,它根本無法工作。應用程序確實接受它,因爲我已經在Log_cat中打印了值。 – Jovan

回答

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的原因很少。總是在未來做到這一點。

+0

我不知道可能是什麼問題。數據庫在手動插入時接受它(「Insert into T1 values'ččč'」)。但從我的應用程序,它根本無法工作。應用程序確實接受它,因爲我已經在Log_cat中打印了值。 – Jovan

+0

當你手動輸入時(我猜想通過PHPMyAdmin),你只使用數據庫。除非你使用的是一個沒有口音的字符集,這當然是非常奇怪的,否則它就會這樣工作。您正在數據庫中輸入信息,數據庫的編碼和鍵盤。當然,它會工作。但是如果你的頁面不合適,那麼問題就會出現。並且介意你,即使它以一種方式工作(DB - >頁面),並不意味着它會以另一種方式工作(頁面 - > DB)。就照我說的做,讓你的字符集合適。我相信你的問題來自那裏。 – Ariane

相關問題