當柳上原的風吹向天際的時候...

          真正的快樂來源于創造

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
          在Ajax程序中,在URL拼接時帶有中文參數是不可避免的事情,如
          var url='/YourAppName/CreateTodo.do?name='+name;
          其中name是來自inputbox的取值,它可能帶有中文。

          如果讓Ajax直接提交這樣的URL,那么后臺用request.getParameter("name");這樣的方法得到的name就會含有亂碼。

          解決之道是先對URL進行兩次編碼,用的是JavaScript的encodeURI函數,具體代碼如下:
          var url=encodeURI('/YourAppName/CreateTodo.do?name='+name);
          url
          =encodeURI(url);

          在后臺的Servlet或是Action中,可以這樣得到正確的文字:
          Sting name=java.net.URLDecoder.decode(request.getParameter("name"),"utf-8");

          就是這樣,值得注意的是,中文環境的機器用容器跑WebApp也許不需要這樣的處理,但其它環境如日文,英文就非此不可了,因此在編碼時盡可能這樣處理一下,如果安裝后出現問題就會造成慌亂了。我們在編寫Web程序時,最好讓文件編碼,數據庫編碼,輸出編碼,網頁編碼保持一致,這樣能省去很多麻煩。

          以上操作的具體原理請見:
          http://yiminghe.javaeye.com/blog/243812
          http://yiminghe.javaeye.com/blog/247837

          posted on 2011-01-26 14:46 何楊 閱讀(2068) 評論(1)  編輯  收藏

          Feedback

          # re: 在Ajax程序中,將帶有中文的URL轉碼及后臺解析出正確的文字的解決方法 2012-02-19 11:27 撒旦飛灑方程式
          撒旦飛灑方程式  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 焦作市| 健康| 繁峙县| 巩留县| 同心县| 江达县| 体育| 德兴市| 丹凤县| 汪清县| 缙云县| 昌乐县| 贵阳市| 前郭尔| 敦煌市| 长治县| 河间市| 岳普湖县| 阿瓦提县| 新和县| 敦煌市| 北流市| 汤阴县| 双牌县| 江源县| 报价| 博罗县| 鹤岗市| 富平县| 黑河市| 孟连| 广元市| 泰顺县| 望谟县| 高雄县| 普兰店市| 云浮市| 青川县| 千阳县| 长白| 巩留县|