当前位置: 技术问答>java相关
总共400分!表单提交后,POST的内容是否会按服务器端的ENCODING自动转换?(在线等候)
来源: 互联网 发布时间:2015-05-13
本文导语: 表单提交后,POST的内容是否会按服务器端操作系统的ENCODING自动转换? 如果是的话,有什么方法能够控制request.getParameter()中获得的内容和客户端相同? 目前我遇到的问题是:服务器是日文环境,中文环境的客户端...
表单提交后,POST的内容是否会按服务器端操作系统的ENCODING自动转换?
如果是的话,有什么方法能够控制request.getParameter()中获得的内容和客户端相同?
目前我遇到的问题是:服务器是日文环境,中文环境的客户端提交一段中文,在另外一个得到这次提交的内容却变成了乱码。
请高手指教!
如果答对您将得到以下问题的所有得分:
http://www.csdn.net/expert/topic/654/654452.xml?temp=.915249(100分)
http://www.csdn.net/expert/topic/608/608610.xml?temp=.9775659(100分)
http://www.csdn.net/expert/topic/523/523629.xml?temp=2.590358E-03(100分)
http://www.csdn.net/expert/topic/657/657568.xml?temp=.7020075(50分)
如果是的话,有什么方法能够控制request.getParameter()中获得的内容和客户端相同?
目前我遇到的问题是:服务器是日文环境,中文环境的客户端提交一段中文,在另外一个得到这次提交的内容却变成了乱码。
请高手指教!
如果答对您将得到以下问题的所有得分:
http://www.csdn.net/expert/topic/654/654452.xml?temp=.915249(100分)
http://www.csdn.net/expert/topic/608/608610.xml?temp=.9775659(100分)
http://www.csdn.net/expert/topic/523/523629.xml?temp=2.590358E-03(100分)
http://www.csdn.net/expert/topic/657/657568.xml?temp=.7020075(50分)
|
这个问题我遇到过,关键是在得到传入的值时要做一个规范化输入字符集的操作。
即String str = new String((request.getParameter()).getBytes("GB2312"),"GB2312");
其实这个语句楼上已有人写过,只是指定的代码有误,应该为“.getBytes("GB2312"),"GB2312")”,两个都是GB2312
即String str = new String((request.getParameter()).getBytes("GB2312"),"GB2312");
其实这个语句楼上已有人写过,只是指定的代码有误,应该为“.getBytes("GB2312"),"GB2312")”,两个都是GB2312
|
jsp在后台实现request.getParameter("xxx")时已经Decoder.decode()的了
只不过默认的也许是server的字符集。而且不同的application server的实现
不同,挺烦人的,其实完全可以自己写这段代码,而不用application server
后台实现。
如果你不喜欢后台的,可以自己覆盖HttpServletRequest类(好像叫这个名)
用BufferedReader就可以,或者用BufferedInputStream,然后自己转码,这
样很安全,完全由自己掌握。
只不过默认的也许是server的字符集。而且不同的application server的实现
不同,挺烦人的,其实完全可以自己写这段代码,而不用application server
后台实现。
如果你不喜欢后台的,可以自己覆盖HttpServletRequest类(好像叫这个名)
用BufferedReader就可以,或者用BufferedInputStream,然后自己转码,这
样很安全,完全由自己掌握。
|
你可以使用getBytes()函数使用"ISO-8859-1"标准来转换request.getParameter()的内容。
gb=new String((request.getParameter()).getBytes("ISO-8859-1"),"GB2312");
写到函数中:
aaa变量应为中文了
gb=new String((request.getParameter()).getBytes("ISO-8859-1"),"GB2312");
写到函数中:
aaa变量应为中文了
|
那你转一下不就完了吗?我们都是这么做的。
|
String aaa = request.getParameter();
传进来的参数已经是乱码了
---------------------------------------
其实aaa的的确确就是中文,只不过是用日文来解释中文后的显示结果,如果你把JSP文件(接收端)的当前字符集(charset)改成GB的话aaa就是中文,你可以试一试,祝好运!
传进来的参数已经是乱码了
---------------------------------------
其实aaa的的确确就是中文,只不过是用日文来解释中文后的显示结果,如果你把JSP文件(接收端)的当前字符集(charset)改成GB的话aaa就是中文,你可以试一试,祝好运!