2

我在我的数据库中发送了一些数据(utf8),我从 phpMyAdmin 看到它们。数据包含希腊语和英语字符。问题是希腊字符显示为问号(????)。英语还可以。无论我尝试过什么:

对于数据库和我的列排序规则:utf8_unicode_ci, utf8_general_ci

在我与数据库连接后:

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"].'")';
4

4 回答 4

1

这是一个常见问题解答,因此 phpMyAdmin 团队编写了此页面以提供帮助: http ://wiki.phpmyadmin.net/pma/Garled_data

于 2013-09-25T12:11:56.563 回答
1
  1. 检查您的数据库是否为 db/tables 启用了 UTF8 编码
  2. 检查浏览器是否启用了 UTF8(例如对于 Firefox:查看/字符编码/Unicode (UTF-8))
  3. 检查响应 Content-type http header: Content-Type: text/html; 字符集=utf-8
于 2013-09-25T11:30:39.230 回答
1

我有同样的问题,我搜索并阅读了这篇文章。
在我找到解决问题的方法后,我想分享它。

更改这行代码

    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

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

现在你没事了。

于 2015-06-19T12:33:10.237 回答
0

乔治,起初我以为你的代码是用 PHP 编写的,考虑到你提到了 phpMyAdmin。虽然,我确实在 Android 方面有一点经验,但我会避免在文件中写入希腊字符(或任何非标准字符).java

相反,您应该使用strings.xmlAndroid 支持的文件,并在代码中访问您的字符串,如下所示:

R.string.kalimera

kalimera您用于“Hello”文本的变量的名称在哪里。

这可以完美地解释为什么数据库充满了问号(????)而不是实际字符(或者至少我认为如此)。

于 2013-09-26T05:06:05.547 回答