gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:08:39 25 4
gpt4 key购买 nike

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

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"

这意味着字符串在数据库中已经损坏,或者您正在使用错误的编码连接到数据库(例如通过 MySQL 传递 characterEncoding=utf8)。

没有将 String 从一种编码转换为另一种编码这样的事情。一旦你有了一个 String,它总是 UTF-16。

如果只是配置问题,您不必担心。 rs.getString() 将返回正确的字符串,PreparedStatement.setString() 将确保字符串正确保存在数据库中。

What you should know about Unicode

关于java - 如何从以 latin1 编码的结果集中以 UTF-8 编码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39440363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com