我用TOMCAT6.0环境下编写了servlet,要做的功能是从servlet访问第三方服务器,从第三方服务器获取UTF-8类型的数据,并把该值用response.getWriter().print方法返回给前台。
出现的问题是:servlet获得的数据后,返回给前台时,前台直接显示乱码(前台是用UTF-8解码的)。
在servlet中直接用println()打印获得的数据时,也是乱码。
如果用eclipse中的TOMCAT插件打开Tomcat工程没有问题,手动直接打开TOMCAT时,有乱码现象。
------最佳解决方案--------------------------------------------------------
InputStream fstream = feedentity.getContent();
BufferedReader fbf = new BufferedReader(new InputStreamReader(fstream,"GBK"));
------其他解决方案--------------------------------------------------------
接的时候再转一下编码类型
------其他解决方案--------------------------------------------------------
可能服务器传过来的数据不是utf8的
------其他解决方案--------------------------------------------------------
不知道你配置了tomcat6.0的server.xml 文件没
C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf
之前你最好 备份一下
用记事本 打开 server.xml 你用8080端口找到 相应的 改成 下面的
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443"
URIEncoding="utf-8"/>
------其他解决方案--------------------------------------------------------
服务器中返回来的数据头信息是:200Server: Apache-Coyote/1.1 Content-Type: application/vnd.newbay.sng.pri+xml;charset=UTF-8 Content-Language: zh-CN Content-Length: 746 Date: Tue, 15 Nov 2011 06:07:08 GMT
应该是UTF-8的,问题是用eclipse中的tomcat插件打开TOMCAT时正常。用手动打开tomcat时出现乱码。
------其他解决方案--------------------------------------------------------
我接收的时候代码如下:
feedrequest = sng.httpGet(fheaders, Feedurl, fpara, null);
HttpResponse frep = sng.execute(feedrequest);
feedentity = frep.getEntity();
InputStream fstream = feedentity.getContent();
BufferedReader fbf = new BufferedReader(new InputStreamReader(fstream));
String fline = fbf.readLine();
然后从servlet传递fline参数到前台时用的如下:
System.out.println("返回feed值:"+new String(fline.getBytes("GBK"),"UTF-8"));
response.getWriter().print(new String(fline.getBytes("GBK"),"UTF-8"));
这样能解析大部分中文,但是部分中文还是乱码。。。
------其他解决方案--------------------------------------------------------
在经过服务器时出现的乱码,那肯定是服务器的编码方式不是utf-8 看到你 的那么信息是utf-8 可能需要重启一下服务器把。。?
------其他解决方案--------------------------------------------------------
大家帮忙看一下在如下代码
feedrequest = sng.httpGet(fheaders, Feedurl, fpara, null);
HttpResponse frep = sng.execute(feedrequest);//自己写的类,执行httpClient的execute
feedentity = frep.getEntity();
InputStream fstream = feedentity.getContent();
BufferedReader fbf = new BufferedReader(new InputStreamReader(fstream));
String fline = fbf.readLine();
POST后,获得从服务器的返回值时,哪块代码被TOMCAT默认字符编码设置了?
服务器获得的是UTF-8的数据格式,没问题,就到servlet后出现乱码了。。。
------其他解决方案--------------------------------------------------------