使用 MyBatis 读取 MySQL 中的 latin1_swedish_ci 文本

read latin1_swedish_ci text in MySQL using MyBatis

我正在使用 Mybatis 连接到 MySQL 数据库,某些列使用 latin1_swedish_ci 作为字符编码,在查询数据库时会产生奇怪的文本。

我尝试更改 java 代码的编码,但没有适合我的解决方案。

我尝试了什么:

ByteBuffer byteBuffer = Charset.forName("UTF-8").encode(myString)

或:

byte ptext[] = myString.getBytes("latin1");
String value = new String(ptext, "UTF-8");

有什么办法可以获取UTF8编码的数据吗?

使用 utf8 连接,而不是 latin1。 MySQL 将在从 latin1 列读取时进行转换。

我找到了,对于任何遇到这个问题的人, 在我的例子中,字符应该是阿拉伯语,我通过以下方式管理:

  • 在配置文件中,我把连接字符串改成这样

    jdbc:mysql://path.to.db?useUnicode=true&characterEncoding=utf8

  • 每当我需要可读格式的文本时,我都会使用这个

    String readableString = new String(dbString.getBytes("8859_1"), "Cp1256");