簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM