回 帖 发 新 帖 刷新版面

主题:求助eclipse与mysql交换数据间会乱码的问题!

请教各位高手:
在eclipse中显示中文,在mysql的数据也显示中文无问题。
但是从eclipse发送数据到mysql后显示的就都是问号了,无法显示,请教各位有解决方法吗?谢谢!

程序如下:

import java.sql.*;  
public class Myclass {  

        public static void main(String args[]){  

                try {  
                        
                        //Cargar clase de controlador de base de datos  
                        Class.forName("com.mysql.jdbc.Driver");  
                         
                        //Establecer conexion a la base de datos  
                         Connection conexion = DriverManager.getConnection("jdbc:mysql://127.0.0.1?user=root&password=;characterEncoding=utf8");
                         
                         System.out.println("Conecta");
                          
                         //Crear objeto Statement para realizar queries a la base de datos  
                          Statement instruccion = conexion.createStatement();  
                  
                          //Consultar a la base de datos  
                           instruccion.execute("USE vegazana");
                           
                     String s1 = new String("");
                     String s2 = new String(s1.getBytes(), "UTF-8");
                     s2 = "SELECT 中文 FROM colores";
                 
                          System.out.println(s2);
                    String consulta = new String(s2);
                          //String consulta = new String("SELECT 蓝色 FROM colores");
                  
                          //ResultSet conjuntoResultados = instruccion.executeQuery("SELECT 蓝色 FROM colores");
                          ResultSet conjuntoResultados = instruccion.executeQuery(consulta);
                          
                          //Procesar los resultados de la consulta  
                        StringBuffer resultados = new StringBuffer();  
                        ResultSetMetaData metaDatos = conjuntoResultados.getMetaData();  
                        int numeroDeColumnas = metaDatos.getColumnCount();  
                 
                          for(int i = 1; i <= numeroDeColumnas; i++)  
                                          resultados.append(metaDatos.getColumnName(i)+"\t");  
                                          resultados.append("\n");  
                 
                         while(conjuntoResultados.next()) {  
                                         for(int i = 1; i <= numeroDeColumnas; i++)  
                                         resultados.append(conjuntoResultados.getObject(i) + "\t");  
                                         resultados.append("\n");  
                         }  
                         System.out.println(resultados.toString());  
                        }  
                
                         catch(ClassNotFoundException e){ System.out.println(e); }  
                         catch(SQLException e){ System.out.println(e); }  
                         catch(Exception e){ System.out.println(e.getMessage()); }  
                 }  
        
}


提示的错误如下:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException

回复列表 (共4个回复)

沙发

MySQL 对中文的支持不是很好。在创建数据库和表时要指定其为UTF8编码。

create database 数据库名 DEFAULT CHARACTER SET utf8 character set utf8 ;

create table 表名
(
  字段名 varchar(50)  character set utf8 约束
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;

板凳

谢谢楼上的朋友,我在mysql里全部设置的都是utf8,显示也没问题,但是中文数据经过eclipse处理后返回到mysql就都是??了,没法解决,唉~~头痛啊!

3 楼

那和Eclipse有什么关系啊?

难道你用别的IDE显示就没有问题吗?

你是不是在控制台插入的中文数据然后再在图形界面上显示啊?那样当然不行。
如果是在Eclipse中插入数据,显示是不会有问题的。

4 楼


eclipse的每个文件都是可以单独设置字符集的
右键-properties-resource-text encoding

假设你当前选择了gb2312编码
页面上的“中文”就是采取gb2312编码表示的
为了让mysql能识别
要进行如下转换
String statement = "select 性别 from student";
String utfStatement = new String(statement.getBytes("GB2312"), "UTF-8");
非常麻烦

建议表就不要建中文字段,
如果非要建中文的,查询的时候用\uxxxx来代表中文字符吧

我来回复

您尚未登录,请登录后再回复。点此登录或注册