import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Login extends HttpServlet { /**
*
*/
private static final long serialVersionUID = 1392116269495894774L; @Override
protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
login(arg0, arg1);
} @Override
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
login(arg0, arg1);
}
public void login(HttpServletRequest request, HttpServletResponse response) throws IOException{
request.setCharacterEncoding("gb2312");
System.out.println("*****************"+request.getParameter("username"));
PrintWriter out = response.getWriter();
out.print(request.getParameter("username"));
out.close();
}
} <servlet>
<servlet-name>login</servlet-name>
<servlet-class>Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>直接服务器访问
http://localhost:8080/sort/login?username=中文名字
后台打印是乱码. 页面显示是正常的.
这个是怎么回事啊????
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Login extends HttpServlet { /**
*
*/
private static final long serialVersionUID = 1392116269495894774L; @Override
protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
login(arg0, arg1);
} @Override
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
login(arg0, arg1);
}
public void login(HttpServletRequest request, HttpServletResponse response) throws IOException{
request.setCharacterEncoding("gb2312");
System.out.println("*****************"+request.getParameter("username"));
PrintWriter out = response.getWriter();
out.print(request.getParameter("username"));
out.close();
}
} <servlet>
<servlet-name>login</servlet-name>
<servlet-class>Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>直接服务器访问
http://localhost:8080/sort/login?username=中文名字
后台打印是乱码. 页面显示是正常的.
这个是怎么回事啊????
解决方案 »
- servlet 中process方法
- 为什么他不在一行显示?简单的题,多多的分
- java.lang.NullPointerException奇怪现象
- JSP界面添加查询功能,根据日期来查询(请教高手赐教)
- 我的数据库是mysql有一个表有60000多条数据就跑不动了怎么办
- struts2 中datetimepicker标签的format属性的语法问题
- 关于使用PreparedStatement对象setDate方法的问题,如何将表单中提取的时间格式的字符串转换成java.sql.Date类型。
- 等米下锅!!!小女子有礼了!!!
- 哪位朋友有支持jdbc2.0 和msSQL的jdbc驱动程序?请给我一份,急需!谢谢,奉上50分先!
- 刚入门SpringMVC 有个地方不明白
- EJB Local部署异常:java.lang.IllegalArgumentException: Wrong target在线急等!!!
- 顶。。。。
应该改为:request.setCharacterEncoding("GBK");
设置服务器的编码方式,加过滤器,这样就没有乱码了
是地址传参啊!用这个URLDecoder
URLEncoder
java.net.URLEncoder
URLEncoder
public void login(HttpServletRequest request, HttpServletResponse response) throws IOException{
try{
request.setCharacterEncoding("gb2312");
String username =new String(request.getParameter("username").getBytes("iso8859-1"),"gbk");
System.out.println("*****************"+username );
PrintWriter out = response.getWriter();
out.print(request.getParameter("username"));
out.close();
}catch(Exception e){}
}
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="gbk"/>
String username =new String(request.getParameter("username").getBytes("iso8859-1"),"gbk");
楼主这样试试,应该可以解决你的问题.一般乱码可以用以下几种方式:
1.在页面上设置编码encoude="GBK"
2.request.setCharacterEncoding("gb2312");
3.在tomcat中修改
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="gbk"/>
4.使用过滤器.
注意,要不都用gbk或gb2312或utf-8,保持编码一致
username = new String(username .getBytes("ISO8859-1"));
public void login(HttpServletRequest request, HttpServletResponse response) throws IOException{ request.setCharacterEncoding("gb2312");
System.out.println("*****************"+new String(request.getParameter("username").getBytes("iso8859-1"),"gbk"));
PrintWriter out = response.getWriter();
out.print(request.getParameter("username"));
out.close();
}2.方法
D:\apache-tomcat-5.5.29\conf\server.xml搜索<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
加入 URIEncoding="gbk"<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="gbk"/>以上两种方法是解决你直接没有页面访问SERVLET的方法.