如何使用java将阿拉伯语单词插入mysql数据库

我有一个java应用程序,想在mysql数据库中插入阿拉伯语单词,我的代码看起来像

Connection con = null; String url = "jdbc:mysql://localhost/"; String db = "students"; String driver = "com.mysql.jdbc.Driver"; try { Class.forName(driver); con = DriverManager.getConnection(url+db,"root",""); Statement st = con.createStatement(); String name = new String(txtName.getText().getBytes(), "UTF-8"); int val = st.executeUpdate("insert into student(name, roll) VALUES('"+name+"','"+txtRoll.getText()+"')"); } catch (Exception ex) { ex.printStackTrace(); } 

但它只插入’??????’。 我现在能做什么?

在db变量声明后添加此变量:

 String unicode= "?useUnicode=yes&characterEncoding=UTF-8"; 

然后修改你的行:

 con = DriverManager.getConnection(url+db,"root",""); 

 con = DriverManager.getConnection(url+db+unicode,"root",""); 

我遇到了同样的问题但是使用中文数据,并且不仅数据库连接中的UTF8是解决方案,您还应该这样做:

确保正确定义了MySQL配置编码。 将这些行添加到my.cnf “如果使用linux的情况下”或my.ini “case you using you”

 [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 character-set-server=utf8 

您必须将数据库创建为UTF-8表,否则无论您添加什么,它都将永远无法存储它…

第二,你需要在保存它之前对其进行编码,我喜欢使用unicode …有一件事是,如果你有一个指定32长度的列,你将不得不增加unicode,因为单个字符占用6字符,

字母h显示为U + 0068

@maerics我尝试使用PreparedStatement而SQL注入攻击仍然可以完成,我认为要么实现PreparedStatemnt错误,要么你的feed不正确。