[英]Insert special Characters / PHP + MySql + Android
這個問題已經問了很多次,但是沒有建議的解決方案對我有用:(
我需要使用Android通過PHP將特殊字符(例如'(右撇號)插入MySql DB中。
MySql表定義為:
ENGINE=InnoDB DEFAULT CHARSET=utf8;
數據通過Java傳遞給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”進入數據庫:“ A?B”
謝謝
刪除對utf8_decode
函數的調用就可以了!
嘗試mysqli_real_escape_string()函數。 考慮到連接的當前字符集,這會轉義字符串中的特殊字符以用於SQL語句。
例:
mysqli_real_ecape_string($mysqli,$param1);
mysqli_real_ecape_string($mysqli,$param2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.