国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

GET方式提交中文編碼問題以及三種解決方式

2019-11-14 23:57:17
字體:
來源:轉載
供稿:網友
GET方式提交中文編碼問題以及三種解決方式

  GET方式提交在WEB中是非常常用的方式,有時候我們在使用GET方式提交請求不得不提交中文,但是TOMCAT等容器對于GET方式的編碼問題總是讓人折騰。

  先說說流程吧:

    我們的內容使用GET方式發送,就會在URL后面帶上內容,在游覽器發來的請求經過了游覽器的URI編碼,發送到服務器這邊,如果是struts2會經過攔截器進行URI解碼,并且使用"iso8859-1"進行編碼,因為傳輸過程是二進制的。

  這時候想解決中文編碼問題有三種方式

    假設:

    url:http://localhost:8080/test?name=測試

    一、在服務器進行處理

      得到的內容是"iso8859-1",使用

        String str = new String(name.getByte("iso8859-1"),"utf-8");

      得到正確的值。

      ps:這種方式有個缺點;這種方式服務器必須默認使用iso8859-1的方式編碼,如果我在TOMCAT更改默認的iso8859-1為utf-8,那么這種方式就無法生效了。

    二、在TOMCAT配置文件中設置

      在TOMCAT的目錄下conf/server.xml中,搜索"8080"端口,如果改了端口按端口號搜索,搜到之后在這個標簽中空格輸入 URIEncoding="UTF-8" ,它默認是iso8859-1。

      ps:這種方式缺點顯而易見,換了服務器就要更改,有時候忘記也是很常見的事情。

    三、手動編碼多一次

      游覽器和服務器傳輸都是先編碼后解碼,對中文的支持不太好,那么能不能把中文事先轉換成英文或數字傳輸呢?

      假設:

        1、name=測試,在JS標簽中,使用encodeURI(param)方法先將“測試” 轉成 name=%26%92(瞎編的) 游覽器再自動進行URI編碼 name=%2525%2592(%的URI編碼為%25);

          ognl表達式中,使用<s:param name="name" value="%{@java.net.URLEncoder.encode(name,'utf-8')}"> 對值進行URI編碼,同時在struts2配置文件中開啟靜態方法的支持 java.net.URLEncoder.encode()。

          struts.xml: name="struts.ognl.allowStaticMehtodaccess" value="true"

        2、這時候將這鏈接GET方式提交了

        3、服務器那邊得到 name=%26%92 ,我們再使用URIDecoder.decode(name,"utf-8"); 進行解碼,這樣就得到了“測試”

      PS:這種方式是不是比較好,不依賴TOMCAT

    


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大兴区| 井冈山市| 宽甸| 新乡县| 聊城市| 桂平市| 治县。| 上蔡县| 洛扎县| 新营市| 民乐县| 汉中市| 突泉县| 吕梁市| 顺平县| 深泽县| 措勤县| 太谷县| 易门县| 顺义区| 五常市| 道孚县| 休宁县| 隆子县| 桓台县| 绥德县| 阿瓦提县| 平原县| 扬中市| 绥棱县| 游戏| 临泽县| 长寿区| 和平县| 雅安市| 浦东新区| 玉溪市| 凤翔县| 睢宁县| 淳安县| 库伦旗|