2014-05-02 33 views
0

我需要閱讀從DB一些價值觀,我有這樣的口音:「CafeterÃa」,它真正的字是「食堂」口音在PHP和MySQL的PDO

當我通過JSON的PHP腳本,它是這樣的:

{"attribution":"Cafetería"} 

$json = file_get_contents('php://input'); 
$json_post = json_decode($json, true); 
$attribution = $json_post['attribution']; 

但它被讀錯了,並沒有給我任何一行數據庫。我使用PDO從數據庫中讀取數據。

$db = new PDO("mysql:host=$hostDB;dbname=$nameDB;charset=UTF-8", $userDB, $passwordDB, array(PDO::ATTR_EMULATE_PREPARES => false, 
     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 

    $stmt = $db->prepare("SELECT id, title, lat, lon FROM POI_Table WHERE attribution=:attribution"); 
    $stmt->execute(array(':attribution'=>$attribution)); 

如果我在HEIDI中執行相同的查詢,但是完全按照json文件給出的值寫入值,它可以工作。如何在查詢中使用之前轉換該值?

回答

0

你正在爲mysql設置編碼錯誤的方式。

這是utf8沒有一個破折號

對方的回答基本上是錯誤的,因爲它會導致額外的雙重新編碼和工作只LAT1字符。

+0

我會嘗試,只需一秒 – Biribu

+0

不工作。結果與我的問題相同 – Biribu

+0

我會試着去看看它爲什麼會失敗。當我弄清楚什麼時,我會再次發帖。 – Biribu

0

在代碼中如何做到這一點?

$json_post = json_decode(utf8_decode($json), true); 
+0

完美。我有一個口音問題。我每天都要和他們一起工作,就像拍攝給我。謝謝你。 – Biribu

+0

如果這解決了你的問題,不要忘記把你的問題作爲回答;) – MyWetSocks

+0

它說我必須等幾分鐘才能做到。它完成;) – Biribu