2015-02-06 75 views
0

好吧,我根本沒有得到字符編碼,我正在研究它,但我希望有人能向我解釋這裏發生了什麼。字符編碼 - 我不明白

在我的產品表中,我有說明。在phpMyadmin中,它看起來像這樣:enter image description here

我已經將編碼(僅在今天)設置爲utf8_general_ci。好。

現在在pLongDescription我的產品之一,我有這樣的:

enter image description here

你看到呢?這是Word或其他東西使用的一些狡猾的撇號。它不斷向我的生活蔓延。我甚至無法將其鍵入我的鍵盤以外的任何詞。我很喜歡用'來代替。

無論如何,我會認爲與utf8_general_ci設置,它不會是一個問題。如果我輸出這通常從通過PHP數據庫中,我得到這個:

enter image description here

不過,如果我使用utf8_encode($pDescription)我得到這個:

enter image description here

他們都不是完美的。手頭上,我有一堆可怕的錯誤。另一方面,由於在描述中遺漏了撇號,我得到了糟糕的語法和拼寫。

這裏發生了什麼,我該如何解決?

+1

你有一個字符集在你的PHP連接數據庫設置?你使用什麼驅動程序? – 2015-02-06 10:32:48

+0

目前,不,我沒有 - 我有'uft8'由於某種原因被宣佈出來,我想我已經嘗試過了,但它沒有奏效。 – Chud37 2015-02-06 10:36:48

+0

@Rududou_Sennin但是,utf8_encode()肯定會照顧那個嗎? – Chud37 2015-02-06 10:37:16

回答

0
mysql_query('SET CHARACTER SET "utf8"'); 
mysql_query('SET NAMES "utf8"'); 
ini_set('default_charset', 'UTF-8'); 

使用這種:),幫助我

把這個MySQL連接後

,如果您使用的HTML,不`噸忘記設置字符集: 元的charset =「UTF- 8"

0

嘗試這樣的:

$pDescription = mb_convert_encoding ($pDescription, "UTF-8", "UTF-8"); 

不要忘了在的php.ini到aactivate這個擴展extension=php_mbstring.dll並重新啓動Web服務器

希望幫助:)

0

你是混淆概念。你所看到的是「整理」,它表明它將如何對數據進行排序。編碼設置在表級別,創建表時使用DEFAULT CHARSET = utf8(或首選字符集)。 (它也可以在my.ini/my.cnf中設置爲全局默認值)

然後,您需要通過爲每個連接調用SET NAMES utf8(或mysql_set_charset('utf8', $link);)指示每個連接它是utf8連接你建立的連接。

從現在開始,當你讀出數據並用PHP輸出時,它會向瀏覽器發送一個utf8字節流。假設你已經指示瀏覽器通過設置相關的內容類型頭文件或類似的代碼來解碼它,它就會工作。

如果PHP文件中有任何使用擴展字符的硬編碼文本,PHP文件也必須保存爲utf8,因此它與數據庫的輸出相匹配(否則您將在頁面上呈現混合編碼)。

還有更多的事情要考慮,一個建議是這篇文章:

http://www.toptal.com/php/a-utf-8-primer-for-php-and-mysql