用java将阿拉伯文字符整理成mysql数据库

nwsw7zdq  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(347)

我在使用java将阿拉伯语字符整理到mysql数据库时遇到了一些问题。
我的所有表和数据库都使用utf8。以下是mysql workbench的一些屏幕截图:


我试图整理的字符串是:عماد
值得一提的是,阿拉伯语编码超过2个字节,所以这显然不是常规utf8无法处理阿拉伯语的问题。
连接到数据库的代码:

String url = "jdbc:mysql://127.0.0.1:3306/mydatabase";
String user = "root";
String passwd = ".........";
String unicode= "?useUnicode=yes&characterEncoding=UTF-8";

setConnection((Connection) DriverManager.getConnection(url+unicode, user, passwd));

插入值的代码:

query3 = "INSERT INTO keyword (idkeyword, keyword) VALUES ("+keyWord.getId()+",'عماد')";
Statement state7 = (Statement) connection.createStatement();
state7.executeUpdate(query3);

我收到的例外情况是:

java.sql.SQLException: Incorrect string value: '\xD8\xB9\xD9\x85\xD8\xA7...' for column 'keyword' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2482)
at com.mysql.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1552)
at com.mysql.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2607)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1480)
at controller.DataBaseAccess.saveProject(DataBaseAccess.java:285)

非常感谢您的帮助!
编辑:当试图通过jdbc将utf-8插入mysql时,在“字符串值不正确”中的答案都与本例无关,因为它们使用utf8mb4,而阿拉伯语字符不需要utf8mb4(它们存储在2字节以上,而不是4字节以上)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题