Java MySQL-问号

Java MySQL-问号,java,mysql,utf-8,character-encoding,collation,Java,Mysql,Utf 8,Character Encoding,Collation,当从我的应用程序中插入一些汉字时,它们会作为“?”写入数据库。不用说,在内置的命令行mysql客户端中,所有这些都可以正常工作 连接字符串: --用户db uri=jdbc:mysql://localhost/tigasedb?user=tigase_user&password=tigase_passwd&useUnicode=true&characterEncoding=utf8&noAccessToProcedureBodies=true 代码: 我想不起来的是什么 编辑: 创建表格。。。E

当从我的应用程序中插入一些汉字时,它们会作为“?”写入数据库。不用说,在内置的命令行mysql客户端中,所有这些都可以正常工作

连接字符串:

--用户db uri=jdbc:mysql://localhost/tigasedb?user=tigase_user&password=tigase_passwd&useUnicode=true&characterEncoding=utf8&noAccessToProcedureBodies=true

代码:

我想不起来的是什么

编辑:

创建表格。。。ENGINE=InnoDB默认字符集utf8 collate utf8\u unicode\u ci行\u格式=动态

插入字符:在健身房

验证由内置命令行mysql客户端完成

编辑: 无济于事

检查系统属性“file.encoding”的值。如果不是这样的话 “UTF-8”,则需要显式指定“UTF-8”作为字符 将字节解码为字符时进行编码。例如,当 使用字节[]调用字符串构造函数,或使用 输入流阅读器

-没有帮助


存储过程中声明的字符串变量为
\u loc VARCHAR(128)CHARSET utf8
-没有帮助

您的数据库表列应使用正确的字符集和排序规则创建。您可以在创建或更改表格时定义利润:

col_name {CHAR | VARCHAR | TEXT} (col_length)
    [CHARACTER SET charset_name]
    [COLLATE collation_name]
以下是mysql链接,帮助您了解更多信息:


它与当前的5.1.26驱动程序版本配合良好:

createTable("testBugF1", "(`str` varchar(10) ) default character set utf8 collate utf8_unicode_ci ");
String str = "在健身房";

Properties props = new Properties();
props.put("characterEncoding", "utf8");
Connection c = getConnectionWithProps(props);

this.stmt = c.createStatement();
this.stmt.executeUpdate("insert into testBugF1 values (\""+ str +"\")");
this.rs = this.stmt.executeQuery("select * from testBugF1");
assertTrue(this.rs.next());
String res = this.rs.getString(1);
System.out.println(res);
assertEquals(str, res);

你用的是老司机吗?如何插入字符?

数据库的字符集和排序规则是什么?要插入哪些字符?如何验证数据库存储了什么?你在专栏中使用了什么字符集?问题已被编辑!命令行客户端可能无法正确显示中文,具体取决于终端仿真器和区域设置。您可以使用hex函数查看实际存储的内容:
从表中选择hex(您的列),其中…
@Joni in hex是3f3f。在java代码中插入之前检查了字符串值,结果是ok…@kellogs,那么您的意思是说它正确地保存在db中了?那你在哪里看到的???标志
createTable("testBugF1", "(`str` varchar(10) ) default character set utf8 collate utf8_unicode_ci ");
String str = "在健身房";

Properties props = new Properties();
props.put("characterEncoding", "utf8");
Connection c = getConnectionWithProps(props);

this.stmt = c.createStatement();
this.stmt.executeUpdate("insert into testBugF1 values (\""+ str +"\")");
this.rs = this.stmt.executeQuery("select * from testBugF1");
assertTrue(this.rs.next());
String res = this.rs.getString(1);
System.out.println(res);
assertEquals(str, res);