当前位置: 技术问答>java相关
为什么在linux上,response.sendRedirect还有问题?
来源: 互联网 发布时间:2015-03-24
本文导语: 我写了一个servlet,其中要将错误信息转发: url = String url = "error?text=" + java.net.URLEncoder.encode("错误"); res.sendRedirect(url); 在error中,用URLDecoder.decode(text),即可得到中文。 这个servlet在win2000上正常工作,但在linux redh...
我写了一个servlet,其中要将错误信息转发:
url = String url = "error?text=" + java.net.URLEncoder.encode("错误");
res.sendRedirect(url);
在error中,用URLDecoder.decode(text),即可得到中文。
这个servlet在win2000上正常工作,但在linux redhat 7.2中就不行。
我用了new String(str.getBytes(text), "ISO-8859-1","GB2312")等方法,但没有用。
结果地址栏中应当是B2%E2%CA%D4%D2%B3%C3%E6这样的串才对。
但现在是:????或是%3F%3F%3F%3F%3F%3F%3F%3F。
我的servlet engine是domino 5.09. linux redhat 7.2
jre是1.1.8,我把1.3的URLDecoder解压出来用了。
javac TestServlet.java -encoding GB2312
也用了。
而我如果是用一个href来实现,url = "error?text=...."。
linux下,在error中只需要用new String(str.getBytes(text), "ISO-8859-1","GB2312")转换即可。中文就好了。但这个sendRedirect有问题。
不知道是否和操作系统有关,我的redhat是英文,是不是需要汉化?
哪位高手指教。在下感激涕零!
url = String url = "error?text=" + java.net.URLEncoder.encode("错误");
res.sendRedirect(url);
在error中,用URLDecoder.decode(text),即可得到中文。
这个servlet在win2000上正常工作,但在linux redhat 7.2中就不行。
我用了new String(str.getBytes(text), "ISO-8859-1","GB2312")等方法,但没有用。
结果地址栏中应当是B2%E2%CA%D4%D2%B3%C3%E6这样的串才对。
但现在是:????或是%3F%3F%3F%3F%3F%3F%3F%3F。
我的servlet engine是domino 5.09. linux redhat 7.2
jre是1.1.8,我把1.3的URLDecoder解压出来用了。
javac TestServlet.java -encoding GB2312
也用了。
而我如果是用一个href来实现,url = "error?text=...."。
linux下,在error中只需要用new String(str.getBytes(text), "ISO-8859-1","GB2312")转换即可。中文就好了。但这个sendRedirect有问题。
不知道是否和操作系统有关,我的redhat是英文,是不是需要汉化?
哪位高手指教。在下感激涕零!
|
好像在非中文系统中在URL后用中文参数会出错的,我曾在日文系统中试过,还望高手赐教!
建议:记得在JSP中URL后的中文可直接读出的(当然要在中文平台下)
首先你要搞清楚java.net.URLEncoder.encode()是把String转成什么编码了,如果是系统的(英文),那直接URLDecoder.decode(),new String(str.getBytes(text), "ISO-8859-1","GB2312")应该没问题的,但从你的显现看处理后String已经丢位了。所以很可能LINUX或domino 5.09的内部编码不是ISO_8859_1,所以你可以试试其他的编码方式:new String(str.getBytes(text), "?????","GB2312")“????”是其他的编码,如果成功通知我一声哦!
建议:记得在JSP中URL后的中文可直接读出的(当然要在中文平台下)
首先你要搞清楚java.net.URLEncoder.encode()是把String转成什么编码了,如果是系统的(英文),那直接URLDecoder.decode(),new String(str.getBytes(text), "ISO-8859-1","GB2312")应该没问题的,但从你的显现看处理后String已经丢位了。所以很可能LINUX或domino 5.09的内部编码不是ISO_8859_1,所以你可以试试其他的编码方式:new String(str.getBytes(text), "?????","GB2312")“????”是其他的编码,如果成功通知我一声哦!
|
why u must using the chinese into the redirect URL.
Can u replace it with english.
Can u replace it with english.
|
升级JDK到1。2。2