這個問題已經被問過很多次,但沒有建議的解決方案對我:(插入特殊字符/ PHP + MYSQL +安卓
工作,我需要插入特殊字符,如「(關閉撇號),例如成通過PHP MySQL數據庫使用Android
MySQL的表被定義爲:
ENGINE=InnoDB DEFAULT CHARSET=utf8;
數據被傳遞到PHP,經由爪哇,所以:
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);
PHP收到這麼:
//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 ...
插入命令插入的記錄,但特殊字符表變爲 「?」。 有什麼幫助嗎?
即 「A'B」 成爲在DB: 「A B」
謝謝
顯示您發送的小字符串的示例。然後顯示php如何接收該字符串。所以在你把它放入數據庫之前。並且在你解碼utf8之前。我們首先想知道數據庫是否與它有關。 – greenapps 2014-09-23 09:25:45
'$ mysqli'賦值之後添加調用:'$ mysqli-> set_charset(「utf8」);' – Rimas 2014-09-23 09:43:23
我編輯了我的問題,添加了set_charset函數和一個例子。但我繼續有這個問題! :'( – Geltrude 2014-09-23 11:57:43