2013-06-20 64 views
0

在我的網頁中,有一個有多個輸入的表單。但是,輸入字符與輸入「標籤」字符的行爲不同。我嘗試將文件編碼設置爲UTF-8和UTF-8 + BOM(我正在使用EditPlus)。File enconding(UTF-8無法正常工作)

使用UTF-8:

enter image description here

使用UTF-8 + BOM:

enter image description here

輸入字符來自MySQL數據庫,其中歸類utf8_unicode_ci(使用phpMyAdmin )所以我不知道這是否是問題的根源。有任何想法嗎?

+2

請仔細閱讀http://stackoverflow.com/questions/279170/utf-8-all-the-way-through,看看是否能解決您的問題。 – Danack

回答

0

解決了這個問題:只是改變了文件enconding爲 「西歐(Windows)中1252」(使用EditPlus的)現在每個角色都能正確顯示。

1

這意味着兩個數據片段都不是相同的編碼。如果該文件被解釋爲Latin-1(或類似的編碼),則會得到第一個輸入字段中的數據有效的結果(意味着它是Latin-1編碼),但標籤是錯誤的(意思是它不是Latin- 1編碼)。當文件被解釋爲UTF-8時,標籤是正確的(意味着它是UTF-8編碼),但輸入字段中的數據是錯誤的(意味着它不是UTF-8編碼)。如果數據顯示爲「UNICODE REPLACEMENT CHARACTER」,這肯定表示文檔被解釋爲Unicode編碼(例如UTF-8),但字節序列無效。

我會猜測,標籤在文件中硬編碼,但在輸入字段中的數據來自於一個數據庫。在這種情況下,您需要爲數據庫設置連接編碼以返回UTF-8。至於爲什麼文件在沒有BOM的拉丁文-1和帶有BOM的UTF-8中被解釋:因爲瀏覽器將BOM識別爲表示UTF-8,沒有它,它默認爲Latin-1。您需要設置正確的HTTP標頭以告知瀏覽器文件的編碼方式,並擺脫BOM。

閱讀這些資源: