2011-11-18 68 views
1

mysql的,我知道已經有很多幾乎相同的問題,但我仍然沒有找到答案我的問題。 我想將「lesÎlesAçores」放入數據庫。但我得到:特殊字符從PHP

les Îles Açores 

我試過全光照:

  • SET Names 'ut8)
  • $mysqli->set_charset("utf8");
  • mysql_real_escape_string()
  • htmlentities(在這裏我got htmlentities,但我想知道是否有另一種方式)

代碼:

$name_fr = $_POST["name_fr"]; $name_nl = $_POST["name_nl"]; 
$arr_kollommen = array("NAME_FR","NAME_NL"); 
     $arr_waardes = array($naam_nl,$naam_fr); 
     $obj_db->insert("landen",$arr_kollommen,$arr_waardes); 

是否有人有一個想法如何解決我的痘痘問題嗎? 非常感謝!

+0

您是否使用過「SET Names'ut8)」或「SET NAMES'utf8'」。前者(如上所述)是錯誤的 – calumbrodie

回答

0
$name_fr = $_POST["name_fr"]; 
$name_nl = $_POST["name_nl"]; 
$arr_kollommen = array("NAME_FR","NAME_NL"); 
$arr_waardes = array($naam_nl,$naam_fr); 
$obj_db->insert("landen",$arr_kollommen,$arr_waardes); 

嘗試使用,而不是對編碼解碼UTF_8。 這樣的:

$name_fr = $_POST["name_fr"]; 
$name_nl = $_POST["name_nl"]; 
$naam_fr = utf8_decode($naam_fr); 
$naam_nl = utf8_decode($naam_nl); 
$arr_kollommen = array("NAME_FR","NAME_NL"); 
$arr_waardes = array($naam_nl,$naam_fr); 
$obj_db->insert("landen",$arr_kollommen,$arr_waardes); 
+0

這工作。謝謝。 – user750079

0

2個可能的原因,我可以看到:

1)您的數據庫沒有特色UTF-8場

2)當你從服務器讀取你的數據,你是不是設置連接爲utf -8。如果在寫入時必須將其設置爲utf-8,則在閱讀時還必須將其設置爲utf-8。

檢查使用phpMyAdmin如果數據被破壞了......如果是,那麼就意味着你的SET names'utf-8' 是不工作...

1

確認表使用正確CHARSET,例如:

CREATE TABLE myTable (
    one VARCHAR(255), 
    two VARCHAR(255) 
) DEFAULT CHARSET=utf8; 
+0

這些字段是VARCHAR(100)和字符集= utf8_general_ci – user750079

1
  1. 確保你實際上是在UTF8寫(這意味着你的IDE /編輯器,你寫你的代碼必須具有編碼設置爲UTF-8)。
  2. 記錄損壞了數據庫和您的網頁後,您獲取它或僅在數據庫?
0

你通過 「UTF-8」 參數到您ヶ輛,並html_entity_decode這樣?

html_entity_decode($文本,ENT_QUOTES, 「UTF-8」);