1
我找不到任何理由爲什麼我的斯堪的納維亞字符傳遞到PHP沒有顯示和正確存儲。什麼是錯誤的,當我嘗試從字符串與斯堪的納維亞字符從Android到PHP,像ÅÄÖ
當我使用我的web應用程序時,斯堪的納維亞字符可以正確使用php和數據庫。
如果我從webapp向數據庫寫入消息並將其加載到android應用程序,字符會正確顯示。
在機器人
String message = "Tässä"
try {
// open a connection to the site
URL url = new URL("own_url");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", "");
con.setRequestProperty("Accept-Language", "fi, en-US,fi;q=0.6, en;q=0.5");
con.setRequestProperty("Accept-Charset", "UTF-8");
// Send post request
con.setDoOutput(true);
String urlParameters = "message=" + message;
在PHP
$message = $_POST['message'];
error_log($message);
error_log中示出了它喜歡Ť\ xe4ss \ XE4
mysqli_set_charset($con, 'utf8');
date_default_timezone_set('UTC');
$sql = "INSERT INTO messages SET message='$message'";
mysqli_query($con, $sql);
在數據庫是T'SS
編輯
更改的查詢生成從而防止SQL注入,由於user2864740建議。
$stmt = $con->prepare("INSERT INTO messages (message) VALUES (?)");
$stmt->bind_param("s", $message);
$stmt->execute();
問題#1 - 使用字符串插值,請參閱http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – user2864740
'T \ xe4ss \ xe4' - 00E4 「ä」的unicode點;如果它被轉移utf-8編碼的東西像'c3 a4'應該顯示在某處... – VolkerK
http://stackoverflow.com/questions/279170/utf-8-all-the-way-through –