Unicode(希腊语)字符存储在数据库中,如“??????”

时间:2013-10-28 10:44:01

标签: java mysql jdbc

数据库中的希腊字符就像问号(“?????”)。我找不到解决方案。我使用Java / Swing开发了一个应用程序但是当我在MySQL中插入希腊字母时就像问号一样。我将db collat​​ion更改为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);
    }
}

}

1 个答案:

答案 0 :(得分:4)

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

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);
        }
    }

}