我正在编写一个应用程序(使用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();
}
这段代码不起作用,我还需要做相反的转换(写在数据库上)。如果有人知道一个优雅的解决方案来处理不同的编码在同一个应用程序请让我知道,我很感激。
4条答案
按热度按时间qltillow1#
这意味着该字符串要么已经在数据库中损坏,要么使用错误的编码连接到数据库(例如传递)
characterEncoding=utf8
使用mysql)。没有把字符串从一种编码转换成另一种编码这样的事情。一旦你有了
String
总是utf-16。如果只是配置问题,您不必担心。这个
rs.getString()
将返回正确的字符串和PreparedStatement.setString()
将确保字符串正确保存在数据库中。关于unicode你应该知道什么
r55awzrz2#
函数getbytes还接受一个字符集,或者只接受具有所需编码的字符串。
bkhjykvo3#
我们需要将字符串标注为standardcharsets.utf\u 8
ix0qys7i4#
字符串值=新字符串(数据,“iso-8859-1”);