2013-09-25 178 views
2

我發送一些數據(utf8)在我的dataBase中,我從phpMyAdmin看到它們。數據包含希臘文和英文字符。問題是希臘字符顯示爲問號(????)。英語可以。不管是什麼我曾嘗試:希臘字符 - phpMyAdmin

數據庫和我列排序規則:utf8_unicode_ci,utf8_general_ci

我與數據庫連接後:

mysqli_query ("SET NAMES 'UTF8'", $dbc); 
mysqli_query ("SET CHARACTER SET 'UTF8'", $dbc); 

問題仍然存在,我無法弄清楚如何解決它。有人知道如何解決這個問題嗎?

更新:

try { 
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 

    nameValuePairs.add(new BasicNameValuePair("a", "hello, ΓΕΙΑ ΣΟΥ")); 
    nameValuePairs.add(new BasicNameValuePair("b", "Good Morning, ΚΑΛΗΜΕΡΑ"));    
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

    try { 
     httpclient.execute(httppost); 
    } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
    } 

} catch (IOException e) { 
    Log.i("HTTP Failed", e.toString()); 
} 

而且將值插入數據庫命令:

$q= 'INSERT INTO `table`(`x`, `y`) VALUES ("'.$_POST["a"].'","'.$_POST["b"].'")'; 
+0

我們是否也可以看到一些PHP代碼?也許問題出在你將數據發送到數據庫的地方。 – mavrosxristoforos

+0

@mavrosxristoforos當然,等一下,我會發布一些代碼。 –

+0

android標籤如何應用?你在android上瀏覽該網站嗎?檢查表格中字段的編碼! –

回答

1
  1. 檢查你的數據庫有啓用UTF8編碼 的數據從Android應用程序發送數據庫/表
  2. 檢查瀏覽器是否啓用了UTF8(例如,對於Firefox:查看/字符編碼/ Unicode(UTF-8))
  3. Check reponse內容類型http標頭: Content-Type:text/html;字符集= UTF-8
0

喬治,起初我還以爲你的代碼是在PHP中,考慮到你提到的phpMyAdmin。雖然我在Android上有一點經驗,但我會避免在.java文件中寫入希臘字符(或任何非標準字符)。

相反,你應該使用strings.xml文件Android支持,並訪問你的字符串在這樣的代碼:

R.string.kalimera 

其中kalimera是你用你的「Hello」文本的變量的名稱。

這將很好地解釋爲什麼數據庫填充問號(????)而不是實際字符(或至少是我認爲)。

1

我有同樣的問題,我搜查和閱讀這篇文章。
當我找到解決我的問題後,我想分享它。

改變這行代碼

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); 

,現在你都OK。