写了一个小的jsp+mysql程序! sql操作几条带有中文字符窜插入和查询语句 发现不管是插入到数据库也好还是从数据库里面提取数据 只要是中文都会是????? 不知道怎么解决!! mysql中land表有两个字段 name varchar(20) , word varchar(20)下面是我的代码:<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="gb18030"%>
<%@ page import="java.sql.*" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("gb2312");
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mydata";
String dbName = "root";
String dbWord = "ROOT";
String sql1 = "select * from land";
Connection conn = null;
Statement state1 = null;
ResultSet result = null;
%>
<%
try{
Class.forName(driver);
conn = DriverManager.getConnection(url, dbName, dbWord);
state1 = conn.createStatement();
result = state1.executeQuery(sql1);
while(result.next()) {
%>
<%= result.getString(1) + ","%>
<%= result.getString(2) %><br>
<%
}
}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}finally{
conn.close();
state1.close();
}
%>
</body>
</html>
我的输出:
yangyongjie, 8402175110
kobe, 24
sasa, 110
???, 8402175110
???, 8402175110
??????, 885
那些问号是中文;
pageEncoding="gb18030"%>
<%@ page import="java.sql.*" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("gb2312");
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mydata";
String dbName = "root";
String dbWord = "ROOT";
String sql1 = "select * from land";
Connection conn = null;
Statement state1 = null;
ResultSet result = null;
%>
<%
try{
Class.forName(driver);
conn = DriverManager.getConnection(url, dbName, dbWord);
state1 = conn.createStatement();
result = state1.executeQuery(sql1);
while(result.next()) {
%>
<%= result.getString(1) + ","%>
<%= result.getString(2) %><br>
<%
}
}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}finally{
conn.close();
state1.close();
}
%>
</body>
</html>
我的输出:
yangyongjie, 8402175110
kobe, 24
sasa, 110
???, 8402175110
???, 8402175110
??????, 885
那些问号是中文;
建议用一个函数转换一下:package com.shoponline.util;
public class chStr { /**
* 解决输出中文乱码问题
* @param str
* @return 返回无乱码的STR
*/
public String chStr(String str){ if(str==null){
str="";
}else{
try{
str=(new String(str.getBytes("iso-8859-1"),"GB2312")).trim();
}catch(Exception e){
e.printStackTrace(System.err);
}
}
return str;
}
}
String str = new String(str.getBytes("iso-8859-1"), "GBK");