我在dataBase中发送了一些数据(utf8),我从phpMyAdmin看到它们。数据包含希腊语和英语字符。问题是希腊字符显示为问号(????)。英语还可以。无论我尝试过什么:
对于dataBase和我的列排序规则:utf8_unicode_ci,utf8_general_ci
与dataBase连接后:
mysqli_query ("SET NAMES 'UTF8'", $dbc);
mysqli_query ("SET CHARACTER SET 'UTF8'", $dbc);
问题仍然存在,我无法弄清楚如何解决它。有人知道如何解决这个问题吗?
更新: 数据从Android应用程序发送:
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 :(得分:1)
答案 1 :(得分:1)
这是一个常见问题解答,因此phpMyAdmin团队已编写此页面以帮助: http://wiki.phpmyadmin.net/pma/Garbled_data
答案 2 :(得分:1)
我遇到了同样的问题,我搜索并阅读了这篇文章 在找到问题的解决方案之后,我想分享它。
更改代码的这一行
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
到
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
现在你没事。
答案 3 :(得分:0)
George,起初我认为你的代码是用PHP编写的,考虑到你提到了phpMyAdmin。虽然,我确实在Android方面有一点经验,但我会避免在.java
文件中写希腊字符(或任何非标准字符)。
相反,您应该使用Android支持的strings.xml
文件,并在代码中访问您的字符串,如下所示:
R.string.kalimera
其中kalimera
是您用于&#34; Hello&#34;的变量的名称。文本。
这可以完美地解释为什么数据库中充满了问号(????)而不是实际的字符(或者至少我认为)。