如果 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 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");
【讨论】:
以上是关于如果 MySql 或 phpMyAdmin 包含特殊字符,则给出空指针的主要内容,如果未能解决你的问题,请参考以下文章
如果没有输入数据,如何将 MYSQL phpmyadmin 数据库中的列留空
您可以使用 phpMyAdmin 将 Excel 文件导入 MySQL 数据库吗?