2010-11-04 116 views
1

大家好!我在我的數據庫的表記錄字段的字符集utf-8 general-ci的VARCHAR(100)。 當我將它回顯到網頁時,它會迴響字符串和許多許多方形符號。 如何刪除它們並保留單詞。不要擔心這個問題。將是一個搜索問題?感謝名單!修剪unicode字符串中的空格

+0

更好的問題是爲什麼那些「方形符號」在那裏...... – Artefacto 2010-11-04 00:55:42

+2

好的。爲什麼他們在那裏?) – yozhik 2010-11-04 00:57:50

+0

你可以通過顯示'echo bin2hex($ string)的輸出開始; echo $ string;'和你期待的結果。這可能會提供一些線索。 – Artefacto 2010-11-04 01:23:30

回答

2

腳本是否以UTF-8編碼,並且您是否也使用UTF8連接數據庫? 您可以連接後直接設置使用以下查詢連接的字符集

SET NAMES 'UTF8' 
+0

當前字符集是:latin1 – yozhik 2010-11-04 01:45:18

+0

但爲什麼latin1,當我seted utf-8 general_ci ???? – yozhik 2010-11-04 01:46:03

+0

表和連接字符集是兩個單獨的東西。 Molle說,一旦連接就執行上述查詢。 – Phil 2010-11-04 01:49:06

0

我會嘗試utf8_decode($ string);

+0

\t \t \t – yozhik 2010-11-04 01:04:51

+0

no。 (???? \t ?? \t 0?\t ???? \t ?????? – yozhik 2010-11-04 01:05:44

+0

這樣的符號它給我看 – yozhik 2010-11-04 01:06:07

0

不要忘記設置字符編碼在您的網頁

<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
+0

我加了。不幫忙 – yozhik 2010-11-04 01:44:36

1

你是一個PHP書呆子剛開始與PHP和MySQL一起工作。爲了處理unicode數據,你需要在繼續之前知道一些東西。

首先確保您的表格字段設置爲使用「utf8_general_ci」排序規則來接受所有語言字符集。當然,如果您的數據庫只需要英文和波斯文字符,您可以選擇「utf8_persian_ci」,則可以使用以「utf8_」開頭的其他排序規則。第二:在編寫一些使用MYSQL的PHP​​代碼時,您需要明確要求PHP以utf8格式傳輸您的uni-code數據,以便它與utf8的目標數據類型相匹配。這將導致客戶端的數據按原樣存儲在MYSQL中。

如果你不遵循這個規則,MYSQL會將你的utf8數據存儲爲問號。

爲了避免發生這種情況,您只需在PHP代碼中的任何查詢之前編寫以下行。

mysql_query("SET NAMES 'UTF8'"); 

所以,首先我們需要連接到數據庫。二,致電

mysql_query("SET NAMES 'UTF8'"); 

三,做其他操作。