使用 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");
我正在使用 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");