2013-11-15 25 views
0

Â正在從與開始空的空間到MySQL表,文本域插入覈對儘管具有數據庫和表設置爲utf8_general_ci的歸類。MySQL表設置空的空間到儘管utf8_general_ci

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />在做刀片頁面的頭部。我沒有遇到與同一MySQL安裝中的其他數據庫/表有關的問題,並且這些問題都設置爲latin1_swedish_ci的默認排序規則。

我可以在建立MySQL連接後用mysql_query("SET NAMES 'utf8'");解決問題,但是我想知道爲什麼會發生這種情況,儘管將表設置爲utf-8並且在頁面中使用utf-8字符集。

回答

0

我之前沒注意到它,但文字區域包含&nbsp;去除修復該問題,我並不需要使用mysql_query("SET NAMES 'utf8'");

1

您需要正確初始化與utf8的連接,除非您可以以某種方式設置默認值,這意味着SET NAMES是強制性的。

如果您正在使用一些基於20世紀90年代風格的基於應用程序的打開和關閉代碼庫中隨機點的連接,沒有任何適當的框架,您可能很難跟蹤這些。

+0

謝謝,但這並不能解釋爲什麼我不需要做這與其他數據庫/表在同一安裝。另外我使用trim(mysql_real_escape_string($ _ POST ['macroscopic']));所以不應該有任何空格... – IlludiumPu36

+1

那些不是空格,但它們可以是[不間斷空格](http://en.wikipedia.org/wiki/Non-breaking_space)。在任何情況下,你都應該在*轉義之前做'修剪'*。就像我說過的,除非連接默認是'utf8',否則每次都必須指定它。這是[在字符集文檔中](http://dev.mysql.com/doc/refman/5.6/en/charset-connection.html)。 – tadman

0

你的php/html文件應該有utf-8編碼。你的mysql數據庫和table/s以及排序規則utf-8。然而,你可以嘗試然後從你的php文件中製作測試插件而不是提交html-form-data來查看它是一個php還是html/form/browser問題。