如何从以 latin1 编码的结果集中以 UTF-8 编码字符串

2023-12-14

我正在编写一个应用程序(使用 UTF-8),需要读/写外部应用程序的第二个数据库(使用 ISO-8859-1)。

try {
    // data in latin1
    String s = rs.getString("sAddrNameF");
    System.out.println(s); // shows "Adresse d'exp�dition"
    byte[] data = s.getBytes();
    String value = new String(data, "UTF-8");
    System.out.println("data in UTF8: " + value);
    // The expected result should be "Adresse d'expédition"
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

这段代码不起作用,我还需要进行相反的转换(写入数据库)。如果有人知道在同一应用程序中处理不同编码的优雅解决方案,请告诉我,我很感激。


String s = rs.getString("sAddrNameF");
System.out.println(s); // shows "Adresse d'exp�dition"

这意味着该字符串要么在数据库中已损坏,要么您使用错误的编码连接到数据库(例如传递characterEncoding=utf8与 MySQL)。

不存在将字符串从一种编码转换为另一种编码的情况。一旦你有一个String它始终是 UTF-16。

如果只是配置问题,则无需担心。这rs.getString()将返回正确的字符串并且PreparedStatement.setString()将确保字符串正确保存在数据库中。

关于 Unicode 您应该了解的内容

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从以 latin1 编码的结果集中以 UTF-8 编码字符串 的相关文章

随机推荐