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

Posted

技术标签:

【中文标题】如果 MySql 或 phpMyAdmin 包含特殊字符,则给出空指针【英文标题】:MySql or phpMyAdmin gives null pointer if it contains special character 【发布时间】:2012-08-17 22:03:07 【问题描述】:

我用过这个教程: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;

但它没有显示错误

【问题讨论】:

显而易见的问题,但仍然需要问一个问题:错误在哪里? (又名:post stacktrace) @njzk2 嗯......这并不是一个真正的错误。只是因为他不知道怎么处理“è”,所以他说它是NULL。所以这里不需要堆栈跟踪。只需要知道如何在 android 字典中添加“è”,如果你知道我的意思:p 谁说空? php 是否提取正确的值?那么,您的 php 脚本使用什么编码?你确定它是 iso-8859-1 吗? Eclipse 说它是NULL。如何检查我的 php 脚本使用了什么? 什么意思,Eclipse 说它是空的?你有日志,堆栈跟踪,什么的吗?在 catch 块中添加 e.printstacktrace 并粘贴结果。 【参考方案1】:

找到答案: 在连接数据库之前输入这一行:mysql_query("SET NAMESutf8");。 所以来自:

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");

【讨论】:

以上是关于如果 MySql 或 phpMyAdmin 包含特殊字符,则给出空指针的主要内容,如果未能解决你的问题,请参考以下文章

Phpmyadmin 访问被拒绝

给mysql配置phpmyadmin可视化管理工具

如果没有输入数据,如何将 MYSQL phpmyadmin 数据库中的列留空

您可以使用 phpMyAdmin 将 Excel 文件导入 MySQL 数据库吗?

在 phpmyadmin 中导出带有批量数据的 mysql 表

如何在mysql或phpmyadmin中将列的值增加1?