以下為本站文章分類清單

  1. AJAXspacer
  2. ASPspacer
  3. CSSspacer
  4. Javascriptspacer
  5. Windows 應用程式spacer
  6. 網頁設計
  7. 評論、短文、雜文spacer
  8. 版主spacer
  9. 最新回應spacer

以下為本頁本文內容

ASP UTF-8 編碼發生錯誤後,網站變亂碼

7/11 08' icon

事情是這樣的:

當在 IIS 站台中建立以 UTF-8 編碼的網頁後,發生 500 錯誤時,IIS 預設的訊息是以作業系統為準,所以我的 IIS 就會以 BIG5 編碼回傳錯誤訊息。

這時,你看到的全部都是亂碼,好,Google 一下,你會發現大家都告訴你要自訂錯誤,把 C:\WINDOWS\Help\iisHelp\common 目錄下的 500-100.asp 複製到你的網站,例如根目錄下,再去 IIS 中把自訂訊息中的 500 改成以 URL 指到 /500-100.asp。同時,這個 500-100.asp 的檔案,不要忘了存成 UTF-8 格式。

當一切都準備好了,也的確看到了正確顯示的訊息,不過‧‧‧噩夢才剛開始!

當再度發生 500 錯誤,雖然這時你可以很清楚得知是那一行程式碼有問題,不過接下來,整個網站全部變成亂碼!解決方法有兩種:一個、重啟 IIS 或把 global.asa 改一下,第二個、關閉瀏覽器(要全部關喔)重開。

真他媽的王八蛋,這是什麼玩意兒!

聽我講完噩夢以及罵人後,就要講解決方法了:

首先,改變 500-100.asp 這個動作是沒有問題的,也的確要這麼作,這裡有個測試頁,指令打錯字,產生的錯誤,是不是沒有亂碼了?(這份500-100.asp 是我自己改的,原作可沒有這麼可愛咧)。

其次,整個網站變亂碼的問題,一樣出在 500-100.asp 這個檔案中,找到 Session.Codepage 這裡,你會發現 M$ 的大哥把編碼指定為 1252,非常怪,如果是 BIG5,也該指定成 950 啊!1252 是 window-1252 的編碼,而且這個指令是 Session 喔!難怪一發生錯誤,呼叫了 500-100.asp 後,你所有頁面會變亂碼!

自己改,建議你這麼改:

  1. 找到 Session.Codepage=1252,改成 Session.Codepage=65001。這行之上,有一行 bakCodepage = Session.Codepage ,用意是把原編碼保存,不過,通常如果沒有指定這個編碼時,預設就是作業系統語言。所以才要進行下一項修正。
  2. 在檔案一開始 Option Explicit 後插入兩行:
  3. Response.Charset="utf-8"
    Session.Codepage=65001
    其實,Session.Codeopage 的設定,你也可以加在 global.asa 的 Session_OnStart 裡。
  4. 第一行 <%@ language="VBScript" %> 刪不刪,看你的心情了!

好了!祝你順利!

以下為文章回應區

同意轉載,不過麻煩看一下轉載需知

manicure   2017/4/11 下午 06:10:00

I couldn't refrain from commenting. Well written!

SEO - Internet Marketing   2009/12/28 下午 01:08:00

thx...share

ironamn   2009/2/19 下午 11:19:00

謝謝卜大
發現除了頁面編碼要轉為UTF-8格式外
還有這行
<META HTTP-EQUIV="Content-Type" Content="text-html; charset=big5">

也要改為

<META HTTP-EQUIV="Content-Type" Content="text-html; charset=utf-8">

小生   2009/2/11 下午 10:29:00

請問開起Excel的Asp要如何撰寫?

張吉米   2008/7/16 下午 12:01:00

謝謝版主的回應以及把首頁強制分享去掉,我是非常喜愛分享的,否則不會留了這麼多言。版主的原意很好,只是手段可能需要客觀些。當分享在強權底下時,就會造成假民主,觀看過去的那些強迫留言,有蠻多都是只留「我使用XXXXX」,除此之外就沒有分享文字了。然而這個強迫名單只能看到有多少人使用什麼樣的瀏覽器,並無法看到瀏覽者內心真正的想法。

另外,自從有FIREFOX之後,我就再也沒有升級過IE了,所以您說的那標準模式對我來說也完全無用

謝謝您分享這麼多知識
也希望能有更多人分享不被IE制約壟斷的好處

吉米

卜維丰   2008/7/14 下午 03:54:00

吉米,

至於 IE6/7/8 你可以試試使用標準模式(xHTML) 相容度會好很多~~^^

卜維丰   2008/7/14 下午 12:59:00

吉米, 你說的似乎有理~^^

可惜分享在你來看, 是叫作強迫, 對我而言, 卻像他鄉遇故知一般

用不用 Cookies, 就像父子騎馬, 有人贊成有人反對, 不過你提醒我一件事, 似乎是太專制, 這倒可以改一改

最後很抱歉 save.asp 不存在, 主要是有垃圾機器人不斷在掃描, 每隔一陣子, 存檔的程式就要換個檔名, 這點在此致歉

張吉米   2008/7/14 上午 10:58:00

我使用 FireFox,因為IE太爛了,光是自己三個版本的IE(6、7、8)就無法完全相容,感謝GOOGLE大神讓微軟知道自己的錯誤。
而貴站就和微軟一模一樣,我要進入這裡不是為了要分享瀏覽器的經驗,但貴站卻用程式的小技巧,來強迫瀏覽者必須看到貴站的問題。這樣和萬惡微軟那預設的安裝廢物程式到底有什麼不一樣?強迫我們進來這裡並不會讓我們更討厭IE,只會對貴站的專制感到不舒服。而且SAVE.ASP還找不到,根本無法儲存,而且我每次進來都會再問一次「很高興你不是用IE,要不要分享經驗?」貴站難道不能用COOKIE來記憶嗎?越寫越燃起對微軟的憤怒!剛剛做了測試,IE居然可以自由進出!!為什麼萬惡的微軟光臨貴站反而輕輕鬆鬆,不是IE的卻反而處處受制!!

給個回應
姓名:
佈落格網址:
  如果您是要發問問題, 最好有個問題測試的網址, 這樣比較容易找到您問題所在, 謝謝
內容: