我正在编写一个应用程序(使用 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(使用前将#替换为@)