2012-10-27 169 views
0

起初,我們使用的是默認字符集是由latin1_swedish_ci的mysql設置的。然後,我們遇到了諸如俄語等其他語言的問題。因此,現在我們已將表格轉換爲排序規則,並將該字段轉換爲utf8_unicode_ci。在這裏我們需要一些確認,我們應該堅持使用utf8_unicode_ci來支持所有可能的語言,或者去尋找類似utf8_bin的東西?Mysql php字符集設置

下一個php文件的問題,我們使用mysqli,我們已經設置了這個。

if (!mysqli_set_charset($link, "utf8")) { 
    echo("Error loading character set utf8: ". mysqli_error($link)); 
    } 
    else { 
    echo("Current character set: ". mysqli_character_set_name($link)); 
    } 

那麼對於我們使用mysql的地方只有我們做了如下

mysql_query("SET NAMES 'utf8'"); 
mysql_query("SET CHARACTER SET utf8"); 
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'"); 

現在的問題,我們覺得這是像相當乏味,我們很害怕,我們可能會錯過。是否有可能像設置文件一樣設置這個字符設置,就像我們有一個用於db連接的設置一樣?

回答

4

請勿將mysql_ *與mysqli_ *函數混合使用。你需要保持一致!您首先使用mysqli_,然後使用mysql_。那不行!

這是我要做的事:

mysqli_set_charset($Handle, 'utf8'); // <- add this too 
mysqli_query($Handle, "SET NAMES 'utf8';"); 
mysqli_query($Handle, "SET CHARACTER SET 'utf8';"); 
mysqli_query($Handle, "SET COLLATION_CONNECTION = 'utf8_unicode_ci';"); 
// might be a bit redundant but it's safe :) ... I think :) 

然後確保你給它提供適當的UTF8。

+0

@claudarian不,我不混合他們兩個,我需要事務,然後我使用mysqli,我只選擇然後我mysql.So我保持一致,只是我不知道我在哪裏做的事情正確。那麼使用哪個utf8呢,utf8_unicode_ci足以代表所有的字符? – user132638

+0

是我將它設置爲全局值的任何方式,例如在配置文件中?謝謝。 – user132638

+0

@ user132638不知道有什麼,不太在乎。我喜歡自己設置東西,而不是依賴可能或可能不存在的配置。考慮只使用mysqli_。移動到新的界面很容易。 mysql_ *已停止使用......所以如果你剛剛開始,請避開它​​。據我瞭解,你是在同一時間使用兩個連接......這不是很有效。 – CodeAngry