Asp-Classic
經典 ASP 文本替換和 UTF-8 編碼
我們有一個使用經典 ASP 的網站。
我們發布過程的一部分會替換文件中的值,我們在其中發現了一個錯誤,它將文件以 UTF-8 格式寫出。
然後這會導致我們的應用程序開始吐出垃圾。撇號作為一些編碼字元返回。
如果我們然後刪除表明該文件為 UTF-8 的 BOM,則之前呈現為垃圾的文本現在可以正確顯示。
IIS 在遇到 UTF-8 文件時有什麼不同嗎?
UTF-8 不使用 BOM;在某些 Microsoft 軟體中,這是一個令人討厭的錯誤功能,將它們放在那裡。您需要找到發布過程的哪個步驟將 UTF-8 編碼的 BOM 放入文件中並修復它——即使您使用的是 UTF-8,您也應該停止它*,*這確實是當今最好的。
但我懷疑是 IIS 導致了顯示問題。瀏覽器更有可能猜測最終顯示頁面的字元集,當它看到看起來像是 UTF-8 編碼的字節時,它會猜測整個頁面是 UTF-8。您應該能夠通過使用 HTTP 標頭聲明明確的字元集來阻止它:
Content-Type: text/html;charset=iso-8859-1和/或 HTML 中的元元素
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />現在(假設 ISO-8859-1 實際上是您的數據所在的字元集)它應該顯示 OK。但是,如果您的文件在開始時確實有一個 UTF-8 編碼的 BOM,那麼您現在會在頁面中看到它為 ‘’,這就是這些字節在 ISO-8859-1 中的樣子。所以你仍然需要擺脫那個misBOM。
我昨天正在搜尋相同的確切問題並遇到:
<http://blog.inspired.no/utf-8-with-asp-71/>
該頁面的重要部分,以防它消失……
ASP 程式碼:
Response.ContentType = "text/html" Response.AddHeader "Content-Type", "text/html;charset=UTF-8" Response.CodePage = 65001 Response.CharSet = "UTF-8"和以下 HTML META 標記:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />我們正在使用元標記和 asp CharSet 屬性,但頁面仍然沒有正確呈現。將其他三行添加到 asp 文件後,一切正常。
希望這可以幫助!