发表新主题 回复该帖子
主题:servlet中文乱码问题
miracle
帖子档案  楼主 servlet中文乱码问题   Post by : 2008-06-06 10:27:36.0
  • 幼儿园
  • 幼儿园
  • UID:21
  • 主题:36
  • 帖子:146
  • 加为好友 加为好友    发送短信 发送短信

一个sid字段,将字符串“可AA121”写入数据库时没有出现乱码,再将它显示到页面上,也没有乱码,但是,我将他传入servlet里,用string str = request.getParameter("sid");得到时,用system.out.println(sid);显示出来的确是:??AA121

请问这是为什么呢?

我的servlet页面里已经加入了:response.setContentType("text/html;charset=GB2312");

request.setCharacterEncoding("gb2312")

返回页面顶部  

唧唧
2F Re:~   Post by : 2008-06-06 11:02:33.0
  • 幼儿园
  • 幼儿园
  • UID:3
  • 主题:342
  • 帖子:781
  • 加为好友 加为好友    发送短信 发送短信

 你用啥应用服务器? Tomcat  还是 Resin?

system.out.println  是打印到 服务器端的控制台的, 只给管理员调试使用,其他人都看不见的

tomcat 的核心编码 是 ISO 的,你去试试 更改他的编码为gb2312   在 conf/server.xml

签名
 ★★★★★★★★
 纵里寻她千百度,蓦然回首,那人却在,灯火阑珊处!
 MyBlog :http://blog.javawind.net
返回页面顶部  

唧唧
3F Re:~   Post by : 2008-06-06 11:21:07.0
  • 幼儿园
  • 幼儿园
  • UID:3
  • 主题:342
  • 帖子:781
  • 加为好友 加为好友    发送短信 发送短信

给你2个编码解码的方法吧:

传递中文参数的时候 编码一下,接收的时候再解码:

java代码
  1. //编码  
  2. public static String encode(String str){  
  3.     if(str!=null && !str.equals("")){  
  4.         try{  
  5.             return URLEncoder.encode(str,"UTF-8");  
  6.         }catch(UnsupportedEncodingException e){  
  7.             return "";  
  8.         }  
  9.     }  
  10.     else 
  11.         return "";  
  12. }  
  13.  
  14. //解码  
  15. public static String decode(String str){  
  16.     if(str!=null && !str.equals("")){  
  17.         try{  
  18.             return URLDecoder.decode(str,"UTF-8");  
  19.         }catch(UnsupportedEncodingException e){  
  20.             return "";  
  21.         }  
  22.     }  
  23.     else 
  24.         return "";  

需要导入:

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

签名
 ★★★★★★★★
 纵里寻她千百度,蓦然回首,那人却在,灯火阑珊处!
 MyBlog :http://blog.javawind.net
返回页面顶部  

miracle
4F Re:~   Post by : 2008-06-10 08:44:30.0
  • 幼儿园
  • 幼儿园
  • UID:21
  • 主题:36
  • 帖子:146
  • 加为好友 加为好友    发送短信 发送短信

 呵呵...谢谢了

返回页面顶部  

miracle
5F Re:~   Post by : 2008-06-10 10:33:28.0
  • 幼儿园
  • 幼儿园
  • UID:21
  • 主题:36
  • 帖子:146
  • 加为好友 加为好友    发送短信 发送短信
以下是引用 唧唧 于 2008-06-06 11:02:33.0 的发言

 你用啥应用服务器? Tomcat  还是 Resin?

system.out.println  是打印到 服务器端的控制台的, 只给管理员调试使用,其他人都看不见的

tomcat 的核心编码 是 ISO 的,你去试试 更改他的编码为gb2312   在 conf/server.xml

 在哪里啊?server.xml里面好像没有ISO啊,要怎么改啊?

返回页面顶部  

唧唧
6F Re:~   Post by : 2008-06-10 11:58:17.0
  • 幼儿园
  • 幼儿园
  • UID:3
  • 主题:342
  • 帖子:781
  • 加为好友 加为好友    发送短信 发送短信

 <Connector port="8080" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" debug="99" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="gb2312"/>

加上去~

中文编码  还是建议 用 3楼 的方法~,地址栏是不应该出现中文

签名
 ★★★★★★★★
 纵里寻她千百度,蓦然回首,那人却在,灯火阑珊处!
 MyBlog :http://blog.javawind.net
返回页面顶部  

miracle
7F Re:~   Post by : 2008-06-12 08:57:45.0
  • 幼儿园
  • 幼儿园
  • UID:21
  • 主题:36
  • 帖子:146
  • 加为好友 加为好友    发送短信 发送短信

 不能不说说为什么地址栏是不应该出现中文呢?

返回页面顶部  

admin
8F Re:~   Post by : 2009-06-24 12:20:27.0
  • 幼儿园
  • 幼儿园
  • UID:1
  • 主题:30
  • 帖子:70
  • 加为好友 加为好友    发送短信 发送短信
以下是引用 唧唧 于 2008-06-10 11:58:17.0 的发言
 <Connector port="8080" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" debug="99" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="gb2312"/>
...


还得补上 useBodyEncodingForURI="true" 节点 !!
签名
JavaWind.Net
返回页面顶部  


CopyRight © 2008-2009 JavaWind.Net Studio All Rights Reserved
Powered By JWind.BBS Vesion 1.0.0 Beta1 Processed in 21 ms,0 (Queries)  Gzip enabled

WAP - 清除Cookies - 联系我们 - JavaWind.Net Studio - Archiver - TOP Valid XHTML 1.0 Transitional Valid CSS! 粤ICP备07511478号