日期:2014-05-20 浏览次数:20803 次
public static String urlEncode(String url) { final String hexChars="0123456789ABCDEF";//16进制符号 StringBuffer sb=new StringBuffer(); for(int i=0;i<url.length();i++) { char c=url.charAt(i); if(c<128) sb.append(c);//小于128的ascii符号保留 else//非ascii符号转化成字节数组,并以%开头 { String temp=String.valueOf(c); byte[] b=temp.getBytes(); for(int j=0;j<b.length;j++) { sb.append('%'); sb.append(hexChars.charAt((b[j]&0xf0)>>4)); sb.append(hexChars.charAt(b[j]&0x0f)); } } } return sb.toString(); }
------解决方案--------------------
……楼上的代码跟方法让我很郁闷。
j2me中的utf-8跟别处的utf-8虽然名称一样,但实际是不同的。
j2me中会多两个字节,表示整个字符的长度,放在编码的开头。
所以,如果你使用readUTF()时,就要小心了,它只认有头的。不过这个知识点对你的问题没影响。你需要把中文参数转换成为URLEncode
不过上面的代码似乎不够,你可以看看我的文章。是从java中的源代码修改而来的。
http://blog.csdn.net/hunhun1981/archive/2007/09/26/1801224.aspx
------解决方案--------------------
if("GET".equalsIgnoreCase(request.getMethod())){
Map map = request.getParameterMap();
for(Iterator it = map.keySet().iterate();it.hasNext();){
String[] value = (String[])it.next();
value[0] = new String(value[0].getBytes("ISO8859-1"),"GB2312");
}
}
这是我就在上面写的代码...有可能有些单词写错了..
请核对哦.
这个方法我用了好多次了,每个项目都用过哦...
提出来和大家分享一下啊