2011-09-28 15 views
2

HTML表單是否使用默認字符集?或者是否有使用的默認accept-charset屬性?HTML表單,字符集和accept-charset屬性

在我們的在線表單中,我們遇到了字符和字符集的一些問題。

HTML頁面設置爲使用字符集ISO-8859-1(使用content元標記),但表單中沒有特定的accept-charset屬性集。

後端數據庫使用UTF-8編碼。

我不確定爲什麼這裏使用兩個不同的字符集 - 這個決定比我的時間要早​​一點,不能輕易改變。

大多數時候,一切都非常愉快。當有人輸入一個不包含在ISO-8859字符集中的字符時,問題就出現了 - 它在瀏覽器中正確顯示,但作爲未知實體來到後端。 真是奇怪,它然後將正確地轉移到瀏覽器。

我認爲到目前爲止,即使用戶輸入一個字符,這不是在ISO-8859字符集形式,網頁會使用的字符發送數據到服務器時從meta標籤設置;導致奇數實體顯示在數據庫中。這聽起來像一個可行的解釋,並且 - 如果是這樣 - 將改變HTML頁面的內容類型是對問題的合理解決方案?

乾杯。

回答

2

瀏覽器將發送與輸入頁面相同字符集中的文本。 accept-charset可能會導致問題,如果您使用它,請確保它具有與您的頁面相同的字符集。

它是一個未知實體的原因是因爲您的數據庫將其視爲UTF-8。但是當它回到頁面時,它只是字節,這次被視爲ISO-8859。

但是,它可能如果您使用您的任何數據庫的字符串函數上的文字如果是把它當作UTF-8引起的問題。

+0

哦,是的 - 這是有道理的。所以 - 如果我們要改變在數據庫中正確的UTF-8編碼的字符,那麼我們可能會與它錯誤地顯示在網頁中了一個什麼問題? – nihilogist

+0

@nihilogist試試你的數據庫的字符集設置爲ISO-8859,看看會發生什麼。 – alex

+0

可悲的是,我不認爲那將是活動數據庫上的選項,但我給它的老測試一個刺,看看我們能找到。謝謝! – nihilogist