6

数据库中的希腊字符就像问号(“??????”)。我找不到解决方案。我使用 Java/Swing 开发了一个应用程序,但是当我在 MySQL 中插入希腊字母时就像问号一样。我也将 db 排序规则更改为 utf8 和列。我的项目编码设置为 UTF-8。当我从 MySQL 插入希腊字母时,它们会被正确存储。

我正在使用 MySQL 连接器 jar 文件。

public class Testing {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

    try {
        Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/chartest","root","1234");
        Statement pst=conn.createStatement();
        String var1="ασδασδ";
        String sql="INSERT INTO chars(value) values('"+var1+"')";
       pst.execute(sql);
    } catch (SQLException ex) {
        Logger.getLogger(Testing.class.getName()).log(Level.SEVERE, null, ex);
    }
}

}

4

1 回答 1

5

我认为您只需要在创建连接时添加几个参数(useUnicode和)。characterEncoding以下代码适用于我:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.PreparedStatement;

public class GreekTestMain {

    public static void main(String[] args) {
        String connUrl = 
                "jdbc:mysql://192.168.1.3/greektest?" +
                "useUnicode=yes&characterEncoding=UTF-8" +
                "&user=root&password=obfuscated";
        try (Connection conn = DriverManager.getConnection(connUrl)) {
            String sql = "INSERT INTO `chars` (`value`) VALUES (?)";
            PreparedStatement pst = conn.prepareStatement(sql);
            pst.setString(1, "ασδασδ");
            pst.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace(System.err);
        }
    }

}
于 2013-10-28T13:21:32.990 回答