如果MySql或phpMyAdmin包含特殊字符,则它会给出空指针

时间:2012-08-22 13:05:54

标签: java android mysql phpmyadmin bufferedreader

我使用了本教程:http://www.helloandroid.com/tutorials/connecting-mysql-database
这表现很棒。但是我得到了这个名字Eugène但是当我尝试从数据库中取出该名称时,它会给出nullPointer,但是当我将其更改为Eugne时,它会显示该名称。
是否可以从数据库中显示/获取像“è”这样的字符到android?
我读了一些教程,但我无法让它工作。

<?php

mysql_connect("127.0.0.1","root","root");

mysql_select_db("peopledata");

$q=mysql_query("SELECT * FROM people2 WHERE voornaam LIKE '%%'");
//$q=mysql_query("SELECT * FROM people WHERE voornaam ='""'");

while($e=mysql_fetch_assoc($q))

    $output[]=$e;

print(json_encode($output));

mysql_close();

?>

这是我的android java部分:

try {

            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {

                sb.append(line + "\n");
            }

            is.close();
            result = sb.toString();
        } catch (Exception e) {
            android.util.Log.e("log_tag",
                    "Error converting result " + e.toString());
        }

编辑1

08-22 16:24:56.935: I/log_tag(14424): id: 3, name: null;

但它没有显示错误

1 个答案:

答案 0 :(得分:0)

找到答案: 在连接数据库之前,请输入以下行:mysql_query("SET NAMES utf8 "); 所以来自:

mysql_connect("127.0.0.1","root","root");

mysql_select_db("peopledata");

致:

mysql_connect("127.0.0.1","root","root");
mysql_query("SET NAMES `utf8`");
mysql_select_db("peopledata");