我在JSP文件里加的是<%@ page contentType="text/html;charset=GBK" %>和
String dbUrl="jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=GBK";
我在安装MYSQL的时候选择的字符编码是gbk
在MYSQL里的查询能够显示中文(在命令行下的查询
但访问JSP文件的时候出现了如下的形式?·? ???????§
我也将字符编码改成过gb2312,但还是显示乱码··
谢谢各位!!
String dbUrl="jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=GBK";
我在安装MYSQL的时候选择的字符编码是gbk
在MYSQL里的查询能够显示中文(在命令行下的查询
但访问JSP文件的时候出现了如下的形式?·? ???????§
我也将字符编码改成过gb2312,但还是显示乱码··
谢谢各位!!
在里面找到:default-character-set= 将值改成gbk或gb2312或utf8都可以,
如下面: default-character-set=utf8
是数据库取出来就是乱码 ,
还是jsp没正确显示,
可以把从数据库取出的数据打印到后台看看
<%request.setEncoding("gb2312")%> 这个函数记不太清了。就是request设置编码 类型 以前遇到过类似问题
<filter-name>Set Character Encoding</filter-name>
<filter-class>包名+过滤器的类名</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SetCharacterEncodingFilter
implements Filter {
protected String encoding = null; protected FilterConfig filterConfig = null; protected boolean ignore = true; public void destroy() { this.encoding = null;
this.filterConfig = null; } public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException { // Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null) {
request.setCharacterEncoding(encoding);
}
} chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null) {
this.ignore = true;
}
else if (value.equalsIgnoreCase("true")) {
this.ignore = true;
}
else if (value.equalsIgnoreCase("yes")) {
this.ignore = true;
}
else {
this.ignore = false;
} } protected String selectEncoding(ServletRequest request) { return (this.encoding); }}
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%String stuAddr=null;
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "root");
String sql="SELECT stuID,stuName,stuSex,stuAddr FROM T_STUDENT WHERE stuName ='王'";
Statement stmt=conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
stuAddr=rs.getString(4);}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<%=stuAddr%>
<body>
</body>
</html>
jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=GBK";如果不行的话,确认一下,你的tomcat用什么编码,可以在tomcat目录下的conf文件夹下的server.xml文件中查看,也可以修改为你想要的编码
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
像他这样设置浏览器查看编码的格式 然后去TOMCAT里也设置一下编码格式 如果还是乱码的话你就先确认是在具体哪部分出现的乱码
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>
<%request.setCharacterEncoding("gb2312");%>
<%@ page language="java" contentType="text/html;charset=gb2312" pageEncoding="gb2312"%>
<html>
<head
</head>
<body>
<%
try{
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String driver="com.mysql.jdbc.Driver";
Class.forName(driver);
String dbUrl="jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=gb2312";
String dbUser="root";
String dbpwd="12345678";
con=DriverManager.getConnection(dbUrl,dbUser,dbpwd);
stmt=con.createStatement();
rs = stmt.executeQuery("SELECT * from books");
out.println("<table border=1 width=400>");
out.println("<tr><th>编号</th><th>名字</th><th>标题</th></tr>");
while (rs.next())
{out.println("<tr>");
out.println("<td>"+rs.getString("id")+"</td>");
out.println("<td>"+rs.getString("name")+"</td>");
out.println("<td>"+rs.getString("title")+"</td>");
out.println("</tr>");
}
out.println("</table>");
rs.close();
stmt.close();
con.close();
}
catch(Exception e)
{out.println(e.getMessage());
}
%>
</body></html>哪个高手好心的就加我QQ号给我讲哈嘛·前面的我试过了,应该是我有什么地方没注意到
·谢谢了··QQ:420074289(验证:小裙子)
我才学,真的很不懂哦
谢谢谢谢··
import javax.servlet.*;
import java.io.IOException;
/**
* 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题
*/
public class CharacterEncodingFilter
implements Filter
{
public void init(){}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
chain.doFilter(request, response);
}
public void destroy(){}
} 在web.xml中配置:<filter>
<filter-name>charset</filter-name>
<filter-class>过滤器实现类的完全限定名</filter-class>
</filter>
<filter-mapping>
<filter-name>charset</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
String aa=request.getParameter("aa");
aa= new String("ISO-8859-1");这样写应该可以不过就是有点麻烦因为你接受的字段可能很多
另一种办法你可以写一个过滤器来处理乱码问题
楼上有人写过过滤器了 我就不重复了
String aa=new String(request.getParameter("aa").getBytes("ISO-8859-1"),"gbk");