簡體   English   中英

用ANSI編碼html和沒有BOM的UTF-8

[英]Encoding html in ANSI vs UTF-8 w/o BOM

AnsiUTF-8中編寫一個例如php或html文檔而沒有BOM ,然后在網絡服務器上上傳它們有什么區別? 這兩個文件都有元UTF-8。

如果有人用記事本簡單地寫,他們必須選擇Ansi,因為記事本不提供沒有Byde-Order-Mark的UTF-8

不同之處在於,如果您在一些8位代碼頁中編寫文件然后忘記將其轉換為UTF-8,那么人們可能會看到您的網頁被破壞,因為您將字符集設置為元數據中的UTF-8; 並且要快速應用該錯誤修復,您無法使用SFTP或WinSCP訪問該文件,因為您必須再次轉換為8位代碼頁。

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

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

區別在於UTF-8和“ANSI”(微軟用於各種8位編碼的誤稱)是完全不同的編碼,盡管它們與ASCII碼范圍0x00到0x7F重合。

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

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

記事本確實無法將文件保存為沒有BOM的UTF-8。 因此,在創建或編輯PHP文件時,請使用其他程序,例如Notepad ++ 如果你必須使用記事本,你只需要適應這些限制:使用“ANSI”(在找到你的環境中的內容之后 - 它可能是windows-1252,或其他東西),在HTTP頭和meta聲明它標簽,並使用字符引用來表示無法用“ANSI”表示的字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM