隨筆 - 72  文章 - 28  trackbacks - 0
          <2013年12月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(4)

          隨筆分類(66)

          隨筆檔案(72)

          文章檔案(19)

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          一般情況下,URL 中的參數應使用 url 編碼規則,即把參數字符串中除了 -_. 之外的所有非字母數字字符都將被替換成百分號(%)后跟兩位十六進制數,空格則編碼為加號(+)。但是對于帶有中文的參數來說,這種編碼會使編碼后的字符串變得很長。如果希望有短一點的方式對參數編碼,可以采用 base64 編碼方式對字符串進行編碼,但是 base64 編碼方式不能處理 JavaScript 中的中文,因為 JavaScript 中的中文都是以 UTF-16 方式保存的。而 base64 只能處理單字節字符,所以不能直接用 base64 對帶有中文的 JavaScript 字符串進行編碼。但是可以通過 utf.js 這個程序中提供的 utf16to8 來將 UTF-16 編碼的中文先轉化為 UTF-8 方式,然后再進行 base64 編碼。這樣編碼后的字符串,在傳遞到服務器端后可以直接通過 base64_decode 解碼成 UTF-8 的中文字符串。但是還有個問題需要注意。base64 編碼中使用了加號(+),而 + 在 URL 傳遞時會被當成空格,因此必須要將 base64 編碼后的字符串中的加號替換成 %2B 才能當作 URL 參數進行傳遞。否則在服務器端解碼后就會出錯。

          所以我們需要做的就是:
          js中:encodeURI(str).replace(/\+/g,'%2B')
          java中:str.replaceAll("\\+","%2B")

          posted on 2013-12-17 11:03 kelly 閱讀(1543) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 渭南市| 四川省| 乌兰察布市| 洛扎县| 博白县| 开封县| 林周县| 泽普县| 泰州市| 安远县| 江阴市| 佛山市| 东方市| 清丰县| 聂拉木县| 金堂县| 南康市| 逊克县| 满城县| 白水县| 濮阳县| 赤城县| 常德市| 汾阳市| 当阳市| 杭锦后旗| 德阳市| 合作市| 栾川县| 岐山县| 武威市| 依安县| 洱源县| 定日县| 哈巴河县| 新绛县| 黑河市| 嘉荫县| 乌鲁木齐县| 冀州市| 顺义区|