2015-02-10 113 views
-2

我有一個數據庫,我使用MySql和codeigniter混合使用英文和法文名稱。Codeigniter + Mysql =口音沒有正確保存

Andrée這樣的法國名字回到Andrée,其他各種顯然不正確。

我該如何防止這種情況發生,並且我們可以放入Andrée並讓Andrée回來?

謝謝!

+0

你有沒有把你的mysql數據庫設置爲UTF-8/Unicode? – 2015-02-10 00:39:13

+0

[UTF-8直通]可能的重複(http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) – 2015-02-10 00:43:00

+0

表排序規則Utf8_unicode_ci,行排序規則是UTF8_Unicode_CI,codeigniter數據庫設置,設置爲Utf8_unicode_ci 我錯過了什麼嗎? – JonYork 2015-02-10 01:16:43

回答

0

原來,我不得不告訴php utf-8是配置文件中的默認值。一切都很好!

0

如果你的數據庫設置被設置爲UTF-8(並且你的評論是這樣的話),你可能會看到這些奇怪的字符,因爲你的頁面不是以UTF-8的形式呈現的。

UTF-8文檔應該帶有Content-Type頭文件來說明它們應該被解析爲什麼編碼。要添加這個頭,你可以之前或視圖後添加以下代碼/ S得到加載:

$this->output->set_content_type('text/html; charset=utf-8'); 

在你的文檔,你應該添加以下行:

<meta charset="utf-8"> 

如果您渲染文本只有這樣你纔會想將標題的text/html這部分改爲更合適的東西,比如text/plain

+0

我查看了Phpmyadmin中的數據庫值,它具有正確的口音和拼寫,所以它現在是Codeigniter方面的問題。 這已經在我的頭我的所有意見「」 當我把「$ this-> output-> set_content_type('text/html; charset = utf-8');」「在我加載視圖之前的控制器中。 – JonYork 2015-02-10 13:02:35

+0

它應該在邏輯上工作,但沒有看到完整的設置,我會建議使用函數'htmlentities()'(http://php.net/htmlentities)來顯示UTF-8名稱。交給瀏覽器的代碼應該顯示'Andr eeute; e'而不是'Andrée'。 – 2015-02-10 22:41:14