数据库中的希腊字符就像问号(“?????”)。我找不到解决方案。我使用Java / Swing开发了一个应用程序但是当我在MySQL中插入希腊字母时就像问号一样。我将db collation更改为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);
}
}
}
答案 0 :(得分:4)
我认为您在创建连接时只需添加几个参数(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);
}
}
}