问题描述
是这样,我在jsp服务器上建立了个servlet,(LINUX系统的服务器),然后想在我本机上利用URL和URLConnection来POST信息过去,怎么搞的中文过去了就是不能正确显示,服务器端接受到的是一堆???,怎么搞就是不行。我本机上(eclipse开发,eclipse编码采用GBK)post信息的函数如下:publicStringpost(StringurlStr,Stringargs,Stringcharset){if(charset==null||charset.equals("")){charset="utf-8";}try{URLurl=newURL(urlStr);URLConnectionconn=url.openConnection();conn.setConnectTimeout(5000);conn.setReadTimeout(5000);conn.setDoOutput(true);OutputStreamWriterout=newOutputStreamWriter(conn.getOutputStream(),charset);out.write(args);out.flush();out.close();returnpipe(conn.getInputStream(),charset);}catch(Exceptione){//e.printStackTrace();}returnnull;}这里的pipe就不用管了,然后在args参数里面有中文的时候,服务器端servlet接受到的就是一堆???。我曾经将args参数中的中文进行了编码转换,怎么转都不行:s=newString(s.getBytes("ISO-8859-1"),"UTF-8");s=newString(s.getBytes("ISO-8859-1"),"GBK");s=newString(s.getBytes("ISO-8859-1"),"GB2312");s=newString(s.getBytes("UTF-8"),"ISO-8859-1");s=newString(s.getBytes("UTF-8"),"GBK");s=newString(s.getBytes("UTF-8"),"GB2312");s=newString(s.getBytes("GBK"),"ISO-8859-1");s=newString(s.getBytes("GBK"),"GB2312");s=newString(s.getBytes("GBK"),"UTF-8");s=newString(s.getBytes("GB2312"),"UTF-8");s=newString(s.getBytes("GB2312"),"ISO-8859-1");s=newString(s.getBytes("GB2312"),"GBK");s=newString(s.getBytes("ISO8859_1"));s=newString(s.getBytes("UTF-8"));s=newString(s.getBytes("GBK"));s=newString(s.getBytes("GB2312"));s=newString(s.getBytes(),"ISO8859_1");s=newString(s.getBytes(),"UTF-8");s=newString(s.getBytes(),"GBK");s=newString(s.getBytes(),"GB2312");所有这些都试过了,都不行啊。如果我args参数里面没有中文,全部是英文的话,程序运行正确,这说明只是中文编码问题,到底要怎么编码转换啊?救救,从今天晚上8点搞到现在了,人都困了,还是没搞定,救命啊。
解决方案
解决方案二:
帮忙民顶机.............
解决方案三:
猫的Server.xml的Connector添加一个URIEncoding="UTF-8"或GBK的试试,上次我也是怎么设置页面的编码都不对.只有在这里改了.不保证可以
解决方案四:
乱码的根源就是多处地方使用的编码不统一造成的,因为很多环节都有各自的编码设置,所以经常出现头疼的乱码问题。lz可以仔细检查一下是否编码一致。Linux系统有自己的编码设置,是不是这地方没有更改造成的。
解决方案五:
建议使用过滤器
解决方案六:
发内容的时候,将gbk转成utf-8。在服务器端再转回来。
解决方案七:
用java.net.URLDecoder中的decode()和encode()方法编码和解码试试看,应该能解决
解决方案八:
out.write(args.getBytes("gbkOr..."));发送字节码最保险;
解决方案九:
建议过滤器,过滤所有
解决方案十:
打开tomcat的server.xml文件,找到区块,加入如下一行:URIEncoding=”GBK”
解决方案十一:
写一个过滤器
解决方案十二:
<Connectorport="8080"maxHttpHeaderSize="8192"maxThreads="1000"minSpareThreads="400"maxSpareThreads="500"enableLookups="false"redirectPort="8443"acceptCount="500"connectionTimeout="20000"disableUploadTimeout="true"URIEncoding='GBK'/>
打开tomcat安装目录下conf的server.xml文件URIEncoding='GBK'加上这句~
解决方案十三:
基本两步可以搞定90%:1.servlet上重写request,response编码格式2.如果不行写过滤器。。。试试基本不会再出现乱码了
解决方案十四:
写个过滤器一劳永逸
解决方案十五:
把tomcat中的server.xml在Connector行上中加上一句话添加一个URIEncoding="GBK",页面在进行转码就行