url传值乱码 encode转码和decode解码

在java开发中经常遇见汉字传输乱码的问题,特别是在夹杂着javascript和ajax的情况。最近在用android做一个手持终端的应用,移动终端需要调用服务器上部署的action,我采用post传值方式调用,关键代码如下:

   FinalHttp fh = new FinalHttp();

try
{

AjaxParams ajaxParams = new AjaxParams();

ajaxParams.put("theName", "");

ajaxParams.put("typeDesc", "快递公司");

fh.post("http://192.168.1.113:8080//bgxt_Expressinn/XHTML/user/DictonaryAction.action",ajaxParams,
new AjaxCallBack<String>() {…调用失败或成功的处理…}

});

}
catch (Exception e) {

// TODO Auto-generated catch block

//异常处理

}

}

http传值有get和post两种方式,get和post的区别在这里不作赘述,很多前辈在他们的博文中说的很清楚。以get方式传值http默认的编码格式为“ISO8859-1”,因此在使用的过程中我们需要进行转码,代码如下:

new String(request. getParameter(param).getBytes(“ISO8859-1”),”UTF-8”);

正常情况下用post方式传值一般不会出现乱码情况,以下情况需要注意会导致乱码:

  1. 客户端和服务端代码编码格式不同意,我今天就碰到了,android开发的代码格式为“UTF-8”而action的编码格式为“GBK”,这种情况就会出现乱码。

  2. 客户端和服务端的 inherited from container(从继承的容器),可以通过右击工程-》属性查看工程对应的inherited
    from container,如果android端的本属性为unix而服务器端的此属性为windows。

    处理这种通过url地址传值的乱码我个人还是推荐使用java.net.URLEncoder.encode进行转码java.net.URLDecoder.decode进行解码。具体使用代码如下:

转码:

String test =java.net.URLEncoder.encode("测试",“UTF-8”);//转码

AjaxParams ajaxParams = new
AjaxParams();//post参数对象

ajaxParams.put("testFang", "test");

解码:

ActionContext ac = ActionContext.getContext();

HttpServletRequest request
=(HttpServletRequest)ac.get(ServletActionContext.HTTP_REQUEST);//获取request对象

String testFang=request.getParameter("testFang");//获取request参数

String test2=java.net.URLDecoder.decode(testFang,"UTF-8");//解码

时间: 2025-01-19 20:41:28

url传值乱码 encode转码和decode解码的相关文章

javascript处理HTML的Encode(转码)和Decode(解码)总结

HTML的Encode(转码)和解码(Decode)在平时的开发中也是经常要处理的,在这里总结了使用javascript处理HTML的Encode(转码)和解码(Decode)的常用方式 一.用浏览器内部转换器实现转换 1.1.用浏览器内部转换器实现html转码 首先动态创建一个容器标签元素,如DIV,然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持),最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了.

关于URL传值乱码

JS.C#编码解码 转自八神吻你 escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z 1. JS: escape : js使用数据时可以使用escape 例如:搜藏中history纪录. 0-255以外的un

js url传值中文乱码之解决之道

因为js url在传值的过程中使用的是js自己默认的字符集编码规则,我们必须把它转成属于我们自己的编码规格 在websphere 中使用的是url=encodeURI(encodeURI(url)); //用了2次encodeURI 测试成功,第一次转换没有尝试, 处理方法一. js 程序代码:url=encodeURI(url);注意是整个URL 服务器端的代码:String linename = new String(request.getParameter("name").get

url传值到Action的乱码解决方法

jsp页面 URL传中文参数到Action里面出现乱码,用过滤器和控制器都解决不了,用了我两个多小时解决这个小问题!解决方法有以下几种:第一种:在Action中用 new String(str.getBytes("ISO8859_1"), "UTF8"),进行转码,因为传递的时候,中文默人的是ISO8859_1第二种:可通过配置TOMCAT来解决此问题,具体解决方法如下:在tomcat的server.xml里,找到<Connector port="8

jsp之间url传值出现中文乱码

示例: T1.jsp http://localhost:8080/test/Test.action?site=北京 T2.jsp ..... <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> .........以上省略........ <div>${site}</div> ..... 然后

get提交时中文传值乱码的有关问题

get提交时中文传值乱码的问题 get提交时中文传值乱码的问题 url=curWarnList.action paramBean.bsIndex=1&paramBean.siteName=萧山A基站,href连接提交其实是get提交方式,会造成中文乱码.这个主要是编码方式不统一.JSP(手动设置).Java(字符串是unicode编码).操作系统..数据库().Tomcat等等,各种不同环境介质都有不同的编码方式,如果编码方式不统一,就会造成乱码. url参数中文是以ISO8859-1的编码方式

Spring mvc get和post传值乱码问题

1.url拼值 传单值 对象 list  map都是用json的格式传入后台 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w

url传值的长度限制解决办法

今天写到两个页面传值,刚开始通过url上加参数进行传值, var strLink = "my.asp?str1=" + str1List + "&str2=" + str2List ;var iHeight = 600;                                                          // 高度var iWidth = 1000;                                        

URL传值问题,不同浏览器对URL的长度要求

通过URL传值的问题,所以对url字符串进行encodeURIComponent对url字符串内容进行编码,问题解决,但是有时候会出现 The request filtering module is configured to deny a request where the query string is too long,问题的原因是 以get方式传字符串的时候,有长度限制. IIS 7对于Query String有长度限制.默认为2048. 该问题的解决办法可以通过修改configurat