<meta http-equiv="Content-Type" content="text/html; charset=gb2312">不要用这个,用以下这个:
<%@page import="java.util.*,java.io.*,java.sql.*,lunwen1.*"%>
今天高手教我的,你可以查查今天我发的帖子,里面比较详细
<%@page import="java.util.*,java.io.*,java.sql.*,lunwen1.*"%>
今天高手教我的,你可以查查今天我发的帖子,里面比较详细
如果使用了的话就是错的
我在做jsp的时候遇见过这种问题
毛病就是我说的这个
你直接从数据库读出就行了
private String aTarget;
//显示中文
public String codeTransfer(String aSource){
if(aSource==null){return "";}
aTarget = aSource.trim();
try{
aTarget = new String(aTarget.getBytes("ISO8859_1"));
}catch(java.io.UnsupportedEncodingException e){
return aSource.trim();
}
return aTarget;
}%>
调用
String test1=new String(request.getParameter("test1"));
test1=codeTransfer(test1);
在JSP页面上声明为UTF-8,代码如下:
在开始处:<%@ page contentType="text/html; charset=UTF-8" %>
在Head处:<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
JSP页面需要指定用UTF-8编码保存。假设上述JSP页面中有个form提交了,在取的时候需要用如下语句设置编码
无论是在提交到的servlet中还是jsp中都可以使用request.setCharacterEncoding("UTF-8");来设置编码。
这样再取的时候就可以取出form提交的中文字符了。但是如果要显示出来,看你是怎么显示的了。
有两种,一种是用<%out.println(stringsss);%>或者<%= stringsss%>;一种是用response的getWriter()方法生成一个输出流来打印。如果是前者的话,就需要让JSP页面为UTF-8的编码即可。如果是后者,则需要设定response的输出编码为UTF-8,用如下语法来定义:
private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
response.setContentType(CONTENT_TYPE);
此时再用response生成输出流来输出则可以正确的显示中文。公司因为繁体和简体一起用,所以选择了UTF-8编码,不过我想其他编码也应该是类似的思维方式了。限于篇幅原因无法贴出所有的代码,选择贴出主要的部分,如果有人不理解,可以发mail给我,或者上我的blog:http://forum.javaeye.com/blog.php?sid=9edfad2275cb30785d8bc998f4c347d2