无法使用 MyBatis 打印从 MySQL 中获取的日语字符

Unable to print Japanese characters fetched from MySQL using MyBatis

列的排序规则设置为 "utf8mb4_general_ci"。该列下存储的数据是“ベッドルーム”。但是当我使用 MyBatis 获取它并打印出来时,结果是“????????\u2030??????????”

我的配置是这样的:

<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://domain:port/mydb" />
<property name="username" value="user"/>
<property name="password" value="pass"/>

然后我给 url 添加了字符编码。

<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://domain:port/mydb?useUnicode=yes&amp;characterEncoding=utf8" />
<property name="username" value="user"/>
<property name="password" value="pass"/>

结果变成了这个“???????”。

我也尝试添加 属性 driver.encoding

<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://domain:port/mydb" />
<property name="driver.encoding" value="UTF-8" />
<property name="username" value="user"/>
<property name="password" value="pass"/>

仍然无法打印出字符。我不知道问题出在哪里。

我发现问题是由于 Java 的默认编码引起的。我只是在程序启动时使用以下代码更改了它:

try 
{
    Field charset = Charset.class.getDeclaredField("defaultCharset");
    charset.setAccessible(true);
    charset.set(null,null);

    System.setProperty("file.encoding","UTF-8");
} 

catch (Exception e) 
{
    e.printStackTrace();
}