2013-10-30 216 views
0

我目前通過web服務從Android發送信息給PHP中的一個函數,該函數將數據發送到數據庫。Android加PHP特殊字符

雖然,如果我有口音我的話像名字,我收到此錯誤從PHP:

不正確的字符串值:「\ XE1 \ xE1mos ...」列「姓」在 行1

的名稱可以有口音,如: 安東尼奧,若昂等

在PHP函數,插入數據庫之前,我這樣做沒有成功:

$db->set_charset('utf8'); 
$query = $db->prepare("SET NAMES 'utf8';"); 
$query->execute(); 

如果我發送沒有任何口音的數據,服務完美地工作。

編輯:使用utf8_encode(variable).

+0

顯示插入和檢索代碼。 –

回答

1

這是不夠的,指定連接的編碼解決了。您需要將表和數據庫的字符集更改爲utf-8。

因此,請執行下列操作

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE tbl_name CONVERT TO CHARACTER SET "utf-8" COLLATE utf8_general_ci;

+0

謝謝,但我解決了我的編輯帖子。 – user2902515

2

當Android的數據發送到您的Web服務,儘量URL把它們在URL /表單數據,像之前編碼字符串:

// ... 
String encodedName = URLEncoder.encode(name, Http.UTF_8); 
// use encodedName instead of name to pass as parameters to the webservices 

在PHP方面,在使用參數之前,請使用urldecode函數。

$name = urldecode ($_GET['my_param']); 

並繼續使用數據庫中的編碼。另外,請檢查您的表是否已使用UTF_8通用字創建。