插入特殊字符/PHP+MySql+Android

插入特殊字符/PHP+MySql+Android,php,android,mysql,utf-8,special-characters,Php,Android,Mysql,Utf 8,Special Characters,这个问题被问了很多次,但没有一个建议的解决方案对我有效: 我需要通过使用Android的PHP将特殊字符(例如“结束撇号”)插入MySql数据库 MySql表定义为: ENGINE=InnoDB DEFAULT CHARSET=utf8; 数据通过Java传递给PHP,因此: Insert命令插入记录,但特殊字符变为?在桌子上。 有什么帮助吗 i、 eA'B变成DB:A?B 谢谢试试mysqli\u real\u escape\u字符串函数。这将转义字符串中的特殊字符,以便在SQL语句中使用,

这个问题被问了很多次,但没有一个建议的解决方案对我有效:

我需要通过使用Android的PHP将特殊字符(例如“结束撇号”)插入MySql数据库

MySql表定义为:

ENGINE=InnoDB DEFAULT CHARSET=utf8;
数据通过Java传递给PHP,因此:

Insert命令插入记录,但特殊字符变为?在桌子上。 有什么帮助吗

i、 eA'B变成DB:A?B


谢谢

试试mysqli\u real\u escape\u字符串函数。这将转义字符串中的特殊字符,以便在SQL语句中使用,同时考虑连接的当前字符集

例如:


尝试mysqli\u real\u escape\u字符串函数。这将转义字符串中的特殊字符,以便在SQL语句中使用,同时考虑连接的当前字符集

例如:


删除对utf8_解码函数的调用就成功了

删除对utf8\u解码函数的调用就成功了

他在使用事先准备好的陈述。逃避字符串毫无意义。他使用的是预先准备好的语句。转义字符串没有意义。请显示您发送的小字符串的示例。然后显示php如何接收该字符串。所以在你把它放进数据库之前。在你解码之前也是utf8。我们首先想知道数据库是否与它有关;我编辑了我的问题,添加了set_字符集函数和一个示例。但我仍然有这个问题!:'显示您发送的小字符串的示例。然后显示php如何接收该字符串。所以在你把它放进数据库之前。在你解码之前也是utf8。我们首先想知道数据库是否与它有关;我编辑了我的问题,添加了set_字符集函数和一个示例。但我仍然有这个问题!:'
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("param1", value1));       
nameValuePairs.add(new BasicNameValuePair("param2", value2));

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("blabla.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
response = httpclient.execute(httppost);
//To be able to receive UTF-8 (needed?)


mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');

$param1 = $_POST['param1'];
$param2 = $_POST['param2'];

//Convertsion to UTF-8 (needed?)
$param1 = utf8_decode($param1);
$param2 = utf8_decode($param2);

$mysqli = new mysqli($hostname, $username, $password, $dbname);
mysqli_set_charset('utf8',$mysqli);
$mysqli->prepare("INSERT INTO ...
mysqli_real_ecape_string($mysqli,$param1);
mysqli_real_ecape_string($mysqli,$param2);