web ajax應用國際化、亂碼問題總結

來源:互聯網
上載者:User
看到csdn上n多人問同樣的問題,ajax亂碼等等的,想做個總結,不對的地方請各位指教。

我所說的環境是asp.net web應用,其他web開發應用一個道理。

開發國際化、多語言應用的web application,你個基本步驟:

1.首先你項目所有的東東(主要指各種檔案,包括後台代碼、資源檔等)採用utf-8檔案編碼,這一步解決了檔案編碼問題(確保你的檔案真正應用了或轉成了utf-8編碼,用轉換工具或vs的進階儲存體選項)

2.把你所有的web頁面meta中指定charset為utf-8(可以為link、script同時指定charset),這樣你從頁面發出的請求(聲明一點這個請求非ajax請求,ajax請求另作處理),如點擊按鈕產生的post請求等都是以utf-8傳輸內容的了

3.做了2的步驟之後,就要求伺服器端曉得你的client發來的http請求預設編碼的是utf-8的了,一旦它知道了,你在服務端取request中的參數就也不必要做單獨的utf-8解碼處理了,這個在asp.net中用web.config通知web server 的asp.net處理引擎,在其中system.web下加入如下配置:
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" fileEncoding="UTF-8"......

4.解決ajax請求的編碼問題,就是讓ajax求不採用預設的編碼傳輸資料,而是和我們的系統統一採用utf-8編碼,這個要根據你使用的具體的js lib進行設定,prototype中預設用utf-8(如果沒有的話,你可以用ajax的options選項加入encoding:'utf-8'),用dojo的話預設是ansi,各位可以按需設定。另外對於裸寫ajax請求的使用者你可以這樣指定:
request.setRequestHeader('Content-type','application/x-www-form-urlencoded; charset=utf-8');

5.稍微要注意的另一點是,對於get請求(或凡涉及到url傳遞參數的),被傳遞的參數都要先經encodeURIComponent方法處理

就總結這五點,有問題地方再交流,本人有總結疏漏的地方請指正,之前我們項目中的多言語、ajax及普通請求亂碼問題完全解決了

//2007-09-11補充
補充一點,如果遇到有js應用的頁面(多數都是了),出現比較奇怪的錯誤(例如兩個頁面很相似的應用但其中一個就是出錯),大可以放心檢查一下編碼問題,如html web頁面的編碼(在瀏覽器上被選擇的頁面編碼)和所應用的js檔案的編碼,發現問題的話,按上述幾點規則修正,基本可以把錯誤修正,否則這種情況真是很耽誤時間的!

//2007-10-12
另一個很耽誤時間的問題,是由於html頁面的doctype標記引起的css表現不一問題,如兩個很相似的頁面,運用相同的css表現上卻不一致,可以試著更改一下doctype標記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.