隨筆-17  評論-64  文章-79  trackbacks-1
           寫在前面:
               
                這段時間在深圳一家公司實習,公司規定要做2個課題來考驗我們水平,遇到一個模塊只有用AJAX實現才是最完美的,這讓我我想起最初接觸AJAX時就是由于中文亂碼問題讓我放棄了使用這個技術,但是這次我沒有放棄選擇權,我不得不開啟喜愛的百度,搜索著解決方案,但是用來網上所說的好幾個方法都無法解決,所以不得不自己思考一下解決亂碼的方法。
                 現在WEB系統基本上都要用到過濾流技術可是幾乎所有的公司都是用GBK編碼來過濾字符,但是AJAX是老外的技術他們用UTF-8編碼,怎么解決這個問題呢,我想到的昨天一個double類型轉換為金錢格式顯示問題,如果在后臺處理這個問題要花費很多功夫,但是放在前臺用javascript處理就很好,這樣既不影響后臺業務,又實現了前臺顯示格式的要求。那么AJAX編碼能不能在前臺轉換了,立刻尋找相關質料在下面列出。
           
          URL編碼方法有3種
          escape() ,unescape()      encodeURI(),decodeURI()       encodeURIComponent(),decodeURIComponent() 這幾種編碼所起的作用各不相同

          escape() 方法  

          采用ISO Latin字符集對指定的字符串進行編碼。所有的空格符、標點符號、特殊字符以及其他非ASCII字符都將被轉化成%xx格式的字符編碼(xx等于該字符在字符集表里面的編碼的16進制數字)。比如,空格符對應的編碼是%20。

          不會被此方法編碼的字符: @ * / +

          encodeURI() 方法:

          把URI字符串采用UTF-8編碼格式轉化成escape格式的字符串。

          不會被此方法編碼的字符:! @ # $& * ( ) = : / ; ? + '

          encodeURIComponent() 方法:

          把URI字符串采用UTF-8編碼格式轉化成escape格式的字符串。與encodeURI()相比,這個方法將對更多的字符進行編碼,比如 / 等字符。所以如果字符串里面包含了URI的幾個部分的話,不能用這個方法來進行編碼,否則 / 字符被編碼之后URL將顯示錯誤。

          不會被此方法編碼的字符:! * ( ) '

          因此,對于中文字符串來說,如果不希望把字符串編碼格式轉化成UTF-8格式的(比如原頁面和目標頁面的charset是一致的時候),只需要使用escape。如果你的頁面是GB2312或者其他的編碼,而接受參數的頁面是UTF-8編碼的,就要采用encodeURI或者encodeURIComponent。

          在后臺JAVA處理函數:

          JS是:escape()函數    
          Java是:   
          java.net.URLEncoder.encode()   
          java.net.URLDecoder.decode()  
          但是這個函數已經不推薦使用了
          現在推薦使用
          java.net.URLEncoder.encode(str,encode);
          java.net.URLDecoder.decode(str,encode);

          這樣就構成了統一的編碼格式下面舉簡單的個例子:
          在服務器端:
          String encode=java.net.URLEncoder.encode("大家好","utf-8");
          //encode=("%E5%A4%A7%E5%AE%B6%E5%A5%BD"
          String decode=java.net.URLDecoder.decode("%E5%A4%A7%E5%AE%B6%E5%A5%BD","utf-8");

          客戶端解碼Javascript:
          decodeURIComponent(xmlHttp.responseText);
          客戶端傳送時編碼:
          encodeURIComponent("大家好")

          encodeURI("大家好")
          這樣就可以解決中文亂碼編碼問題了。

          下面方一個最簡單的AJAX給大家下載:
          點擊下載
          posted on 2007-04-11 12:12 飛鳥 閱讀(1913) 評論(2)  編輯  收藏 所屬分類: AJAX

          評論:
          # re: 解決AJAX中文亂碼問題比較好的方案 2009-03-15 09:16 | 007
          請參見我的解決方案,是不是更完美?  回復  更多評論
            
          # re: 解決AJAX中文亂碼問題比較好的方案 2009-08-15 23:02 | xdoc_lee
          謝謝。  回復  更多評論
            
          主站蜘蛛池模板: 平陆县| 长丰县| 醴陵市| 泸溪县| 磐石市| 禄丰县| 晋中市| 邳州市| 西平县| 罗田县| 赫章县| 扶沟县| 札达县| 德阳市| 上饶市| 孙吴县| 体育| 藁城市| 资源县| 嘉兴市| 玉树县| 屯昌县| 二连浩特市| 东至县| 麻栗坡县| 夏津县| 措勤县| 辉南县| 宜阳县| 富蕴县| 鞍山市| 宜春市| 万盛区| 宜良县| 昭通市| 台中市| 大名县| 怀柔区| 黄大仙区| 吴旗县| 安岳县|