2012-04-15 31 views
4

我有一個MySQL數據庫,其中有ucs2_slovenian_ci編碼的表。我想在utf-8編碼網頁上編寫表格的內容。到目前爲止,我試着用:MySQL:ucs2_slovenian_ci到utf-8的網頁

mysql_set_charset ("utf-8"); 
mysql_query("SET NAMES 'utf-8'"); 
... 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
... 
<?php echo utf8_encode($text); ?> 
... 

我還在歌廳奇怪的符號(問號)而不是字母S,C,Z 似乎沒有任何工作。

奇怪的是,用php命令mysql_client_encoding($link)它說我有latin1編碼。當我在Firefox中查看頁面時,它表示UTF-8。怎麼了?

請幫忙。

+0

'ucs2_slovenian_ci'是數據庫整理,而編碼是'ucs2'。你需要像'iconv(「ucs-2」,「utf-8」,$ text)',而不是'utf8_encode'(它是'iconv(「utf-8」,「iso-latin-1」,$ text )') – kirilloid 2012-04-15 21:50:25

回答

2

ucs2_slovenian_ci編碼

即不編碼而歸類。排序規則是關於如何排序的信息。

對於您的網站,這甚至不感興趣,因爲這就是數據庫知道自己 - 或更好:數據存儲在其本身。

對於您的網站腳本來說,更重要的是告訴數據庫您需要的編碼 - 這裏:UTF-8。

您通過指定數據庫客戶端編碼來指示數據庫服務器。請查閱您的數據庫客戶端驅動程序手冊如何指定。這可能是因爲:

mysql_set_charset("utf8", $link); 

小心:這是utf8而正式這是寫UTF-8。這對於MySQL數據庫來說很特別,當你設置該參數時,將UTF-8寫爲utf8

不要使用:

mysql_query("SET NAMES 'utf-8'"); 

,因爲它已過時(不太好,看還有PHP手冊和Whether to use 「SET NAMES」)。

如果你告訴它你的編碼所期望的數據庫客戶端,你不需要編碼您自己的,就像這樣:

utf8_encode($text); 

刪除的東西,你不需要它。

1

首先添加header('Content-Type: text/html; charset=utf-8');

mysql_set_charset( 「UTF-8」);

應該是:

$分貝=的mysql_connect($主機名,用戶名$,$密碼);

mysql_set_charset(「utf8」,$ db);

另外,還要確保在MySQL數據庫一切都在UTF-8

不管怎麼說,你可以發揮什麼樣的搭配:

mb_convert_encoding($字符串, 「其他編碼」, 「UTF-8」) ;

+0

mb_convert_encoding只是忽略特殊字符而不是寫它們 我已經嘗試使用mysql_set_charset(「utf8」);並且它不起作用 所以沒有標題...這不是頁面本身的問題,它是ucs-2中的數據庫中的數據問題。無法更改數據庫中的編碼,因爲我不擁有它 – Ales 2012-04-15 22:12:41

+0

@ user1077442:您不需要更改數據庫中的編碼,因爲如果您告訴mysql數據庫需要使用哪種編碼,mysql會爲您執行重新編碼,像'utf8'。它會給你'utf8'。如果你以後自行破門,那是你的錯。但是mysql執行它的命令。 – hakre 2012-04-15 22:14:00

+0

好吧,現在我以某種方式得到它的工作。這並不完美,但現在至少我可以用正確的替換人物。我也注意到,這種特性是沒有表現出來的大問題。謝謝你們 – Ales 2012-04-15 22:25:38