加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将希伯来字符插入MySQL表时获取问号

发布时间:2020-12-15 08:49:14 所属栏目:Java 来源:网络整理
导读:我正在使用Netbeans使用 Java来构建Web应用程序,JSP使用希伯来语字段处理数据库. DDL如下: String cityTable = "CREATE TABLE IF NOT EXISTS hebrew_test.table (" +"id int(11) NOT NULL AUTO_INCREMENT," +"en varchar(30) NOT NULL," +"he varchar(30) C
我正在使用Netbeans使用 Java来构建Web应用程序,JSP使用希伯来语字段处理数据库.

DDL如下:

String cityTable = "CREATE TABLE IF NOT EXISTS hebrew_test.table ("
                            +"id int(11) NOT NULL AUTO_INCREMENT,"
                            +"en varchar(30) NOT NULL,"
                            +"he varchar(30) COLLATE utf8_bin NOT NULL,"
                            +"PRIMARY KEY (id)"
                            +") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1;";
String insert = "INSERT INTO hebrew_test.table (en,he) VALUES ('A','a')";
String insert2 = "INSERT INTO hebrew_test.table (en,he) VALUES ('B','?')";
String insert3 = "INSERT INTO hebrew_test.table (en,he) VALUES ('C','???')";


executeSQLCommand(cityTable);
executeSQLCommand(insert);
executeSQLCommand(insert2);
executeSQLCommand(insert3);

我得到的输出表:

1   A   a
2   B   ?
3   C   ???

代替:

1   A   a
2   B   ?
3   C   ???

我试过Hebrew appears as question marks in Netbeans,但那不是同一个问题.我在表格中得到了问号.

我还将表定义为UTF8_bin,如上面的代码所示.

解决方法

您需要告诉JDBC驱动程序使用UTF-8编码,同时将表示SQL查询的字符解码为字节.您可以通过将useUnicode = yes和characterEncoding = UTF-8查询参数添加到JDBC连接URL来实现.

jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8

否则它将使用操作系统平台默认字符集. MySQL JDBC驱动程序本身非常了解客户端(运行JDBC代码的位置)和服务器端(DB表所在的位置)中使用的编码. DB表使用的字符集未覆盖的任何字符都将被问号替换.

也可以看看:

> Spring Encoding with CharacterEncodingFilter in web.xml

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读