2013-08-24 73 views
3

編寫例如php或html文件在AnsiUTF-8沒有BOM然後上傳到網絡服務器上?這兩個文件都有meta UTF-8 in。ANSI編碼html與UTF-8不帶BOM

如果有人簡單地用記事本寫,他們不得不選擇ANSI,因爲記事本不無Byde順序標記提供UTF-8

回答

3

不同的是,如果你寫在某個8位文件然後忘記將其轉換爲UTF-8,人們可能會看到你的網頁被破壞,因爲你設置的字符集在meta中被設置爲UTF-8;並且很快應用該錯誤修復,則無法使用SFTP或WinSCP訪問該文件,因爲您必須再次轉換爲8位代碼頁。

此外,UTF-8是Unicode,並支持全範圍的字符,而在ANSI代碼頁中則不支持。並非所有Unicode文檔都可以轉換回ANSI代碼頁,因此您無法以這種方式編輯它們。

沒有理智的人使用Windows記事本進行嚴肅的編碼,因爲它缺少功能,語法着色,行尾格式以及對字符集的可怕支持。

3

區別在於,UTF-8和「ANSI」(對於各種8位編碼,微軟用詞不當)是完全不同的編碼,儘管它們與ASCII碼範圍0x00到0x7F一致。

將「ANSI」文件標記爲UTF-8編碼是不正確的。如果數據實際上僅包含ASCII字符,或者在大多數情況下,文件是使用指定正確編碼的HTTP標頭髮送的,則該錯誤不會導致可觀察的影響。

沒有理由不將BOM用於UTF-8編碼的HTML文件。聲稱不然的網頁要麼基於多年前失去所有實際影響的瀏覽器的信息,要麼基於HTML與PHP混淆。在PHP文件中,BOM可能會導致問題,因爲PHP軟件不能正確處理BOM,即在將文件內容插入另一個文件時不會將其刪除。

記事本確實無法將文件保存爲沒有BOM的UTF-8。因此,在創建或編輯PHP文件時,請使用其他程序,例如Notepad++。如果你不得不使用記事本,你只需要適應這些限制:使用「ANSI」(在發現你的環境中它是什麼 - 它可能是windows-1252或其他),聲明它在HTTP標頭和meta標籤,並使用character references來表示不能用「ANSI」表示的字符。