Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java将阿拉伯语单词插入mysql数据库_Java_Mysql - Fatal编程技术网

如何使用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

我有一个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();
    }

但它只插入“??”一词。我现在能做什么?

您必须将数据库创建为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