新手学习servlet 解决中文乱码
最新学习servlet,遇到了一个普遍很蛋疼的中文乱码问题,我知道这个东西网上很多答案,但是我就是无法解决,所以才上csdn来请教大家.用的是MYeclipse
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<form action='/WebForm/GetFormInfo' method='post'>");
out.println("用户名:<input type='text' name='username'/><br/>");
out.println("密 码:<input type='password' name='pwd'/><br/>");
out.println("<input type='radio' name='易做图' value='男'/>男<input type='radio' name='易做图' value='女'/>女<br/>");
out.println("<input type='checkbox' name='hobby' value='旅游'/>旅游" +"<input type='checkbox' name='hobby' value='音乐'/>音乐" +"<input type='checkbox' name='hobby' value='运动'/>运动<br/>");
out.println("<input type='submit' value='提交信息'/>");
out.println("</form>");
接收
PrintWriter out = response.getWriter();
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
String username=request.getParameter("username");
String pwd=request.getParameter("pwd");
String 易做图=request.getParameter("易做图");
String [] hobby=request.getParameterValues("hobby");
out.println("用户名="+username+"<br/>");
out.println("密 码="+pwd+"<br/>");
out.println("性 别="+易做图+"<br/>");
if(hobby!=null){
out.print("你的爱好:");
for(int i=0;i<hobby.length;i++){
out.print(hobby[i]+" ");
}
}
else{
out.print("你没有选择任何爱好!");
}
}
IE上的结果
???=?????
? ?=1234
? ?=?
????:??
开发人员工具
Content-Type text/html;charset=ISO-8859-1 --------------------编程问答-------------------- 还有一个是用eclipse写的
String enc=request.getCharacterEncoding();
String renc=response.getCharacterEncoding();
request.setCharacterEncoding("utf-8");
response.setHeader("content-type","text/html;charset=UTF-8");
out.println("<form action='/ForJdbc/GetLoginInfo' method='post'>");
out.println("用户名 : <input type='text' name='user'/><br/>");
out.println("密 码: <input type'password' name='pwd'><br/>");
out.println("<input type='submit' value='提交'>");
out.println("</form>");
out.println("请求编码:"+enc);
out.println("响应编码:"+renc);
IE显示
--------------------编程问答-------------------- 到底怎么会这样呢,使用eclipse在浏览器上打印字符串还是乱码? --------------------编程问答-------------------- 这样写多累。你加个过滤器试试吧 --------------------编程问答-------------------- 你是想在servlet里面写一个页面? --------------------编程问答--------------------
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
这三句写
response.setContentType("text/html;charset=utf-8");已经足够了 --------------------编程问答-------------------- 不会是你页面编码没改吧? --------------------编程问答-------------------- 乱码不一定是servlet的问题,有可能是tomcat等部署工具的问题。。
解决javaWEB开发过程中后台接受前台的中文信息乱码的问题 --------------------编程问答-------------------- 在网页中显示的数据不符合html标准,浏览器会根据<meta http-equiv="Content-Type" content="text/html; charset=gbk">来决定数据编码,如果没有这个,浏览器将采用默认的编码。
所以你这个最好输出规范的html,前后分别加上
out.println(
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<link href="vote.css" rel="stylesheet" type="text/css">
</head>
<body>
);
out.println(
</body>
</html>
); --------------------编程问答-------------------- 你看看JSP页面的首部,<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>,这段代码中的pageEncoding的值是否设置为UTF-8 --------------------编程问答-------------------- 还没学过啊,不管怎么样遇到问题还是要解决的吧 --------------------编程问答--------------------
我写的不是jsp啊,是servlet --------------------编程问答-------------------- 就是不行我猜索性将三句都加上去的啊,可是开发人员工具打出来的还是iso-8859-1 --------------------编程问答--------------------
但你最后应该是呈现在JSP页面上吧,呈现结果是乱码,是不是? --------------------编程问答-------------------- 你把有关编码的 代码都去掉,先不要写,,无论是响应还是请求,都去掉 --------------------编程问答-------------------- 看一下你数据库用的编码方式也会影响到,我之前就是mysql的编码和项目的编码不一致,就出乱码,而且都是问号 --------------------编程问答-------------------- 写个过滤器吧 --------------------编程问答-------------------- response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//是response !!!!!!在这个前面。。这样就可以了
resp.getWriter(); --------------------编程问答-------------------- 如果楼主还没有解决的话:
(仅供参考,前面的还是需要)
1. 修改eclipse 项目的properties 里面的项目属性,将Text file encoding 改成utf-8
2. 将自己写的servlet.java文件,在记事本中打开,选择另存为文件,并保存为utf-8的格式. --------------------编程问答-------------------- 是不是你用浏览器查看用的不是utf-8? --------------------编程问答-------------------- 应该是要转码吧 --------------------编程问答-------------------- 楼主:
1,首先检查你的jsp页面的传输编码格式是否是utf-8 默认的是ISO-8859-1
2, 可以在你的tomcat中设置编码格式位置如下 tomcat/conf/server.xml中的67行
<Connector port="7080" protocol="HTTP/1.1"
maxThreads="600"
minSpareThreads="100"
maxSpareThreads="500"
acceptCount="700"
connectionTimeout="20000"
redirectPort="7443" URIEncoding="UTF-8" />
3,写一个filter过滤器 --------------------编程问答-------------------- 在servlet写request.setCharacterEncoding("utf-8");
在jsp也写<%request.setCharacterEncoding("utf-8");%>
jsp的最上面也要改成utf-8
工程文件也改。。
再不行看看tomcat 的server.xml里面是不是也改成utf-8
一般前三个就解决了 --------------------编程问答--------------------
是不是你用浏览器查看用的不是utf-8?
补充:Java , Web 开发