Wel*_*uza 2 java encoding resultset utf-8 iso-8859-1
我正在编写一个需要读/写外部应用程序的第二个数据库的应用程序(使用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();
}
Run Code Online (Sandbox Code Playgroud)
这段代码不起作用,我还需要做相反的转换(在数据库上写).如果有人知道在同一个应用程序中处理不同编码的优雅解决方案,请告诉我,我很感激.
String s = rs.getString("sAddrNameF");
System.out.println(s); // shows "Adresse d'exp?dition"
Run Code Online (Sandbox Code Playgroud)
这意味着字符串在数据库中已经损坏,或者您使用错误的编码连接到数据库(例如characterEncoding=utf8
使用MySQL 传递).
没有将String从一种编码转换为另一种编码的事情.一旦你拥有String
它总是UTF-16.
如果只是配置问题,您无需担心.在rs.getString()
将返回正确的字符串,并PreparedStatement.setString()
会确保字符串被正确保存在数据库中.