url传递中文字符串 乱码问题

在做一个搜索系统的时候,遇到以下问题.
直接在浏览器中参数带中文,在java servlet中无法接受,并转换为中文.
举例如下:
开启一个IE.输入如下:
search/index.jsp?q=中国

然后接受
String q = request.getParameter("q");//
System.out.println(q);//这样接受打印直接为乱码,

然后尝试转换

q = new String(q.getBytes("iso-8859-1"), "GB18030");//字符转换
System.out.println(q);//结果打印出来还是乱码,无奈了,奇怪了,这种情况怎么办呢

搜索下了也没有找到答案...

迷茫中,发现居然baidu 和google 也是这样传递参数,但不是乱码
例如,打开一个浏览器,直接输入
http://www.google.cn/search?hl=zh-CN&q=测试&meta=&aq=f

http://www.baidu.com/s?wd=测试
可以接受到中文...

前提是我无法对传递的参数进行预处理,因为对方是.net发过来的请求,我只能对这个中文参数进行转码
恳求各位大牛给个指点,如何解决这个问题.
[b]问题补充:[/b]

前提是我无法对传递的参数进行预处理,因为对方是.net发过来的请求,我只能对这个中文参数进行转码

我只能对
search/index.do?q=中国
接受.
然后在action类里面进行对
String q = request.getParameter("q");//
参数进行处理。.

[b]问题补充:[/b]
再补充一点,我现在的服务器是websphere.  

看我的博客:
[url]http://lighter.iteye.com/blog/150060[/url]

这问题归根结底还是字符编码不相同,改下你转换的字符编码试试..

URL写上charser=utf-8

Tomcat下,我也遇到过这样的问题,原来我在代码中这样处理:
[code="java"]
byte[] b=para.getBytes("iso-8859-1");
String bstr=new String(b,"utf-8");
[/code]
但是这种硬转换编码,移到resin下面就不适用了。
现在的解决办法是修改Tomcat的server.xml文件,在Connector中加入URIEncoding属性,指明目标编码:
[code="java"]

[/code]

楼主可以改成URIEncoding="GBK"一试。

[code="java"][/code]
Set Character Encoding
cn.com.SetCharacterEncodingFilter

encoding
GBK


ignore
true

<filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <servlet-name>action</servlet-name>
</filter-mapping>   [code="java"][/code]

在web.xml里面加入字符集的过滤代码看,encoding参数变为你的字符集。SetCharacterEncodingFilter类google一下就有。

编码
String msg = URLEncoder.encode("中文");

解码
String msg = URLDecoder.decode(request.getParameter("msg"));