java请求中文乱码,javaget请求乱码
如何解决写爬虫IP受阻的问题?立即使用。
出现的问题:
通过get请求向服务器发送请求时,如果请求参数是中文,服务器收到的参数就是乱码。
乱码的原因分析及解决方案:
1.关于解码和编码
代码:“中等”1110001
解码:110001 中间
加扰:在编码和解码的过程中使用不同的字符集。
2.Web应用程序中的字符编码和解码问题
(1)请求流程:
1获取请求
浏览器是用UTF 8编码的,所以应该在服务器上用UTF 8解码。
因为GET请求参数是附加在URL地址上的,所以URL地址的解码字符集应该是统一的。
解决方案:
在tomcat配置文件server.xml中找到第一个连接器,并添加以下属性URIEncoding=UTF-8
2发布请求
在获取请求参数之前执行:request . setcharacterencoding( UTF-8 );
(2)响应过程
(1)指定响应数据的编码字符集。
(2)告诉浏览器应该使用什么字符集来解码响应数据。
1Tomcat服务器会根据解码字符集自动设置编码字符集。
2设置编码字符集:告诉浏览器当前响应数据的内容类型:response . setcontenttype( text/html;charset=UTF-8 );需要注意的是,需要在response.getWriter()中;之前设置,否则无效。
建议:
所有过滤器仅适用于POST请求。在jsp页面中设置字符编码方法仅适用于提交表单时的POST请求,但不能设置GET请求的字符编码。
GET请求使用默认的编码方式,所以对于GET请求,需要在server.xml文件中设置URIEncoding=UTF-8 ,重启TOMCAT解决中文乱码问题。
但是,不建议在href超链接请求或GET请求中传递中文参数。
此外,在传输参数时,使用统一的编码方法来发送和接收中文的传输部分。
reply.jsp?title= Java . net . URL encoder . encode(keywords)然后使用keywords=newstring(request . getparameter( keywords )。接收参数页中的getbytes( 8859 _ 1 );虽然这种方法暂时解决了中文乱码的问题,
但在后期维护和部署到其他服务器时,仍可能出现中文乱码,不建议使用。
对于Post请求,只需在Servlet或jsp中编写以下代码,解决从表单传入的中文乱码问题。
request . setcharacterencoding( utf-8 );了解:
对于Get请求,不能使用上述处理方法,因为请求参数将被追加到地址栏的URL中。应该是这样的:
string str=request . getquery string();
//使用URLDecoder解码字符串
string str 1=Java . net . URL decoder . decode(str, utf-8 );
string[]parastring=str 1 . split();
//paraStrings[0]是第一个参数,依此类推.
for(字符串paraString:paraString)
{
string[]name value=parastring . split(=);
//nameValue[0]是表单的名称,nameValue[1]是表单名称的对应值。
}另一种方法是获取请求参数,然后对请求参数值进行重新编码,即先将其转换为字节数组,再将字节数组重新解码为字符串。
string str=request . getparameter( name );
byte[]bytes=str . getbytes( ISO-8859-1 );
String name=新字符串(字节, utf-8 );结论:传递中文参数时,最好使用POST request提交。不同的服务器设置可能有不同的编码方法,不同的操作系统可能有不同的编码方法。
推荐:java基础教程以上是java中乱码请求的解决方案的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。