2009年6月30日 星期二

JavaScript 的 alert 是亂碼?如何解決 |

通常我們在寫程式時,會希望跳出一些訊息給使用者,但在我的實例中,遇到了跳出的視窗顯示為亂碼!!其代碼如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="950"%>
<%
Dim str
str="登入用戶名不能為空!"
if str<>"" then
response.Write "<script language=JavaScript>alert(""" & str & """);history.go(-1)</script>"
end if
%>

對不起,執行時都會出示亂碼,而不是中文字。(我的網頁採用utf-8編碼,並且在前端加上了Codepage指示詞)
經研究,這是沒有meta設定的關係。即使網頁最前端已有設定%@codepage=65001%,仍然沒用。有時,我的網頁結構特殊,不適合在找地方加上<meta>的設定時(如果可以直接加上meta設定,也可以解決這個問題),可以針對要alert之前,直接塞meta設定在前,這樣,顯示中文就會正常了!!修改如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Dim strMeta
strMeta = "<meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"" />" '先把meta設定寫在變數strMeta中
str="登入用戶名不能為空!"
if str<>"" then
response.Write strMeta&"<script language=JavaScript>alert(""" & str & """);</script>" '直接加在java script之前,讓中文設定生效
end if
%>

就解決了

沒有留言:

張貼留言