【发布时间】:2017-01-19 07:17:39
【问题描述】:
我正在编写一个应用程序(使用 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();
}
这段代码不工作,我还需要做相反的转换(写在数据库上)。如果有人知道在同一应用程序中处理不同编码的优雅解决方案,请告诉我,我很感激。
【问题讨论】:
-
我使用的是 UTF-8,IntelliJ 使用的是 UTF-8 作为标准
-
发现文件编码的任何技巧?因为我只是恢复了一个数据库脚本备份。
mysql -uroot -p < dbscript.sql -
尝试
System.out.println("é\u00E9");只有当那些éé显示正确时,才有问题。控制台不可靠,因为它使用自己的编码。在这里摆弄字节是错误的方法。更多java JDBC驱动传输协议的编码。 -
Notepad++ 或 JEdit 等任何程序员编辑器都可以识别编码。
-
尝试将您的默认语言环境设置为 latin1 等效项,然后运行您的代码。您应该看到您的系统打印正确。如果你这样做了,那么你 db 和值本身就可以了。
标签: java encoding utf-8 resultset iso-8859-1