无法使用 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&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();
}
列的排序规则设置为 "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&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();
}