2012-06-30 51 views
0

我在MySQL 5.0中有一個表格,我把它放在波斯語中的城市名稱,並使用一個頁面,我嘗試讀取一個特定的城市名稱! 它用來說話,但突然從今天起,我的網頁上的城市名稱都是'?????'喜歡! 我轉到phpMyAdmin,將所有排序規則設置更改爲「utf_persian_ci」,沒有任何反應! 它的有趣的是,phpMyAdmin的的「瀏覽」選項顯示一切正常,但是當我試圖讓他們使用這種查詢從頁面的事情發生(所有城市名稱都OK!):UTF8讀波斯字符串爲?在MySQL 5.0中

$result = dbquery("SELECT * FROM ".DB_CITIES." WHERE cty_company_id = ".$_GET['cmp']." AND EXISTS (SELECT cu_cmp_id FROM ".DB_COMPANY_USERS." WHERE cu_cmp_id = ".$_GET['cmp']." AND cu_usr_id = $user_id) AND EXISTS (SELECT ctus_user_id FROM scada_city_users WHERE ctus_user_id = $user_id AND ctus_city_id = cty_id)"); 

提前致謝!

+0

你需要「告訴頁面」你試圖閱讀的內容是用UTF8編碼或者是你試過的任何編碼 – kommradHomer

+2

這並不容易,你需要首先了解這個主題。您正在尋找編碼(不是整理)。但首先從MySQL手冊開始,他們有關於編碼的一章。然後去W3C網站,他們也有編碼和網站的幫助。當你完成所有這些工作後,你的代碼將會看起來不一樣(你也應該瞭解SQL注入之間的關係),所以如果你仍然有問題,更新代碼並改進問題。 – hakre

回答

2

有一種簡單的方法可以告訴數據庫它應該提供UTF-8編碼的字符串。只要告訴你的連接對象,你期望的是哪個字符集,數據庫會爲你完成剩下的工作。

$db = new mysqli($dbHost, $dbUser, $dbPw, $dbName); 

// tell the db to deliver UTF-8 encoded strings. 
$db->set_charset("utf8"); 

排序規則只定義兩個條目應如何比較,它不同於定義字符集。你的HTML頁面也應該是UTF-8編碼的,你可以在這裏找到更多的信息here