Mat*_*uti 4 java mysql jsp jdbc hebrew
我正在使用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);
Run Code Online (Sandbox Code Playgroud)
我得到的输出表:
1 A a
2 B ?
3 C ???
Run Code Online (Sandbox Code Playgroud)
代替:
1 A a
2 B ?
3 C ???
Run Code Online (Sandbox Code Playgroud)
我试过希伯来语在Netbeans中出现问号,但这不是同一个问题.我在表格中得到了问号.
我也在UTF8_bin上面的代码中看到了将表定义为.
您需要告诉JDBC驱动程序使用UTF-8编码,同时将表示SQL查询的字符解码为字节.您可以通过向JDBC连接URL 添加useUnicode=yes和characterEncoding=UTF-8查询参数来实现.
jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
否则它将使用操作系统平台默认字符集.MySQL JDBC驱动程序本身非常了解客户端(运行JDBC代码的位置)和服务器端(DB表所在的位置)中使用的编码.DB表使用的字符集未覆盖的任何字符都将被问号替换.
| 归档时间: |
|
| 查看次数: |
2721 次 |
| 最近记录: |