網頁語言編碼及asp亂碼問題解決方案_應用技巧

來源:互聯網
上載者:User
最近公司有一個日文項目,由於之前使用的是自己開發的中文CMS,並沒有將語言套件分離,在網站建設調試過程中出現了令人頭疼的亂碼問題。

亂碼出現的原因 

由於各個字元編碼的儲存空間不一樣,所以當使用不同的字元讀取資料時,當字元空間過小,就不能正常顯示了。

比如說中文字元的字元集一般是gb2312,如果用utf-8強制讀取改變gb2312的字元,就有可能出現亂碼。因為utf-8的字元集儲存空間大於gb2312,當使用utf-8讀取時,有些字元gb2312的編碼中是不存在的,不存在的字元自然會出現亂碼了。對於靜態檔案來說,如果檔案的儲存編碼和網頁中編碼設定(charset)不一致的話,由於以上原因就會出現亂碼問題。

以上是對於亂碼問題的簡單分析,在解決現有問題時有涉及到了asp對國際化的支援。

涉及到三個函數: @CODEPAGE,Response.CodePage,Session.CodePage

下面是MSDN中的一段話。

Setting @CODEPAGE explicitly affects literal strings in a single response. Response.CodePage affects dynamic strings in a single response, and Session.CodePage affects dynamic strings in all responses in a session.

這三個函數都可以設定asp的編碼,其中 @CODEPAGE 相當於php中的header,必須在文檔的開始發出。

在中文作業系統的IIS中,預設的為gb2312,參數值是:”936″,而日文需要指定文檔CODEPAGE :

<%@ CODEPAGE=932 %> 

我們使用這個函數來設定文檔編碼具體的使用方法可以參考:http://www.cloudward.net/techLife/article.asp?id=490

現在應該沒有問題了吧?哇,問題仍然存在。考慮到SEO公司的asp程式全部需要產生靜態頁面。而產生的頁面全部是windows預設的ANSI,其中包含日文字元仍然會出現亂碼。這樣我們需要一個asp的函數,產生utf-8或者日文編碼的檔案。 我們使用以下程式碼完成:

Set objStream = Server.CreateObject(”ADODB.Stream”)
With objStream
.Open
.Charset = “utf-8″ //編碼,這裡你可以改成任何編碼
.Position = objStream.Size
.WriteText=pencat //pencat 為寫入的資料
.SaveToFile server.mappath(”patch/flilename.html”),2 //組建檔案路徑
.Close
End With
Set objStream = Nothing

經測試後亂碼的問題解決。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.