我用的是NetBeans IDE 7.0.1,jdk1.6.0_10环境,在创建Java Web项目中JSP页面里中文显示乱码,具体代码如下:这个是新用户注册页面.jap <%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="gbk">
<script language="JavaScript" type="text/JavaScript">... ...
</html>
这是处理注册提交的表单页面.jsp
<%@page contentType="text/html"%>
<%@page language="java" import="java.sql.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%
request.setCharacterEncoding("GBK");
... ...//接受用户提交信息,并连接数据库等代码
%>
然后运行注册页面,填注册信息,然后点提交都没错误,查看数据库中相应表时发现中文信息为乱码(我用的是mySQL,安装时候选的日本语那项即支持中文)。
我想问的问题是设置整体JSP页面的字符集,设置提交表单中的中文编码,设置获得表单的中文编码等所用的语句是否一致?? <%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page contentType="text/html;charset=gbk" %>
<%@page contentType="text/html;charset=gb2312" %>
request.setCharacterEncoding("GBK");
这些设置中文编码的语句该怎么用?怎么配合使用才可以不乱码?
请大家帮帮忙~~
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="gbk">
<script language="JavaScript" type="text/JavaScript">... ...
</html>
这是处理注册提交的表单页面.jsp
<%@page contentType="text/html"%>
<%@page language="java" import="java.sql.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%
request.setCharacterEncoding("GBK");
... ...//接受用户提交信息,并连接数据库等代码
%>
然后运行注册页面,填注册信息,然后点提交都没错误,查看数据库中相应表时发现中文信息为乱码(我用的是mySQL,安装时候选的日本语那项即支持中文)。
我想问的问题是设置整体JSP页面的字符集,设置提交表单中的中文编码,设置获得表单的中文编码等所用的语句是否一致?? <%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page contentType="text/html;charset=gbk" %>
<%@page contentType="text/html;charset=gb2312" %>
request.setCharacterEncoding("GBK");
这些设置中文编码的语句该怎么用?怎么配合使用才可以不乱码?
请大家帮帮忙~~
那到底是用UTF-8还是GBK呢?就是具体在jsp页面的第一句话该怎么写??
当用request对象获取客户端提交的汉字信息,有时会出现乱码,所以对包含汉字的字符信息必须进行特殊的处理。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数据组转化为字符串对象即可。上面所述的处理过程如下所示:
String str=request.getParameter(“ChineseWord”);
byte b[]=str.getBytes(“ISO-8859-1”);
str=new String(b);
<%@page contentType="text/html;charset=UTF-8" %>
<%@page contentType="text/html;charset=UTF-8" %>
request.setCharacterEncoding("UTF-8");
这样 都改成UTF-8
我也认为是这样的,要统一格式
我建议全部采用UTF-8来统一,这个应该是没有问题的!!
public String charset = null;
public String getCharset() {
return charset;
} public void setCharset(String charset) {
this.charset = charset;
}
public void destroy() {
// TODO Auto-generated method stub
} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding(charset);
response.setCharacterEncoding("text/html;charset=" + charset);
chain.doFilter(request, response);
} public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
//从配置文件中获取定义的编码方式(如:utf-8或GBK)
this.charset = filterConfig.getInitParameter("charset");
}
}
/**
* 编码过滤器
* @author Administrator
*
*/
public class EncodingFilter extends HttpServlet implements Filter {
private String encode;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest)request;
if("POST".equalsIgnoreCase(httpRequest.getMethod())){
httpRequest.setCharacterEncoding(encode);
}else{
//得到所有参数和值的键值对
Map map = httpRequest.getParameterMap();
Set set = map.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
Object value = map.get(it.next());
if(value instanceof String[]){
String[] values = (String[])value;
for(int i=0;i<values.length;i++){
values[i]=new String(values[i].getBytes("ISO-8859-1"),encode);
}
}else{
String str = (String)value;
str = new String(str.getBytes("ISO-8859-1"),encode);
}
}
}
//将请求交给下一个资源
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
encode = config.getInitParameter("encode");
}
}