如何使用java将阿拉伯语单词插入mysql数据库
我有一个java应用程序,想在mysql数据库中插入阿拉伯语单词,我的代码如下如何使用java将阿拉伯语单词插入mysql数据库,java,mysql,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.g
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();
}
但它只插入“??”一词。我现在能做什么?您必须将数据库创建为UTF-8表,否则无论您添加什么,它都无法存储它 第二,在保存之前需要对其进行编码,我喜欢使用unicode。。。关于这一点,有一点是,如果您有一个指定32长度的列,您必须增加unicode的长度,因为单个字符占用6个字符 范例
字母h显示为U+0068在db变量声明后添加此变量:
String unicode= "?useUnicode=yes&characterEncoding=UTF-8";
然后修改您的行:
con = DriverManager.getConnection(url+db,"root","");
到
我也面临同样的问题,但使用中文数据时,不仅db连接中的UTF8是解决方案,您还应该这样做: 确保正确定义了MySQL配置编码。如果使用linux,则将这些行添加到my.cnf,如果使用windows,则将这些行添加到my.ini
@maerics我尝试改用PreparedStatement,但SQL注入攻击仍然可以进行,我认为要么是PreparedStatement实现错误,要么是您的提要不正确。您确定吗?????数据库里有什么?可能是您用来查看记录的内容无法显示阿拉伯语。编写一些Java代码来读取记录,并将其与原始数据进行比较。此外,请仔细检查您的表是否使用了
UTF-8
charset(或任何其他可以处理阿拉伯字符的字符集)。此外,还可以使用a来避免SQL注入攻击!是的,上面也写着?????在控制台中。同意@Romain检查数据库中的表是否使用了正确的字符编码。关于您的信息,我让您知道,我希望任何语言都能插入例如英语、汉语等。我不知道我的文本框中是哪种语言。@Pritom,只要你使用UTF-8,你就没事了-他的答案中没有特定的语言。假设表格已经创建,需要修改,请问我现在能做什么。我正在使用utf8\U unicode\U ci作为表结构每行的排序规则,可以吗?如果你需要中文,utf8mb4
(和排序规则utf8mb4\U unicode\U ci
)将比utf8
更好。我知道这是一篇老文章,但仍然。。。。我尝试按照您的建议在my.cfg
中进行设置。mysqld部分中的条目defaultcharacterset=utf8
似乎有问题。服务器无法启动。到目前为止没有。此外,附加的双引号停止出现。
con = DriverManager.getConnection(url+db+unicode,"root","");
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
character-set-server=utf8