写了一个小的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
那些问号是中文; 

解决方案 »

  1.   


    建议用一个函数转换一下: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;
        }
        
      }
      

  2.   

    好像是charset问题,你在jsp页面处理中文的时候应该是没有处理charset.用
    String str = new String(str.getBytes("iso-8859-1"), "GBK");