我想在 JAVA 中对这个字符串“Dürrnerstrasse 1 Postfach 1463,D-8800 Ansbach”进行 utf-8 编码以避免特殊字符。
有人可以在这里分享代码吗?
String s = rs.getString("address");
byte [] b = s.getBytes("UTF-8");
String newString = new String(b,"UTF-8");
转换后还是一样
您的字符串已经是 UTF-8,但以 ISO-8859-1 编码:
// D ü r r n e r s t r a s s e
byte[] rawdata = {68, -61, -68, 114, 114, 110, 101, 114, 115, 116, 114, 97, 115, 115, 101};
// 0xC3, 0xBC = "ü" in UTF-8
String s = new String(rawdata, "ISO-8859-1"); // this is what your rs.getString() returns
System.out.println(s);
结果是
Dürrnerstrasse
如果要将字符串重新解释/重新编码s
为 UTF-8,则需要使用正确的源编码检索字节数组,然后使用 UTF-8 目标编码重新创建字符串:
byte[] stream = s.getBytes("ISO-8859-1");
String s2 = new String(stream, "UTF-8");
System.out.println(s2);
结果是
Dürrnerstrasse
附带说明一下,假设它rs
是 JDBC ResultSet,您还应该考虑正确配置数据库客户端/驱动程序 - 如果您的数据库已经使用 UTF-8,驱动程序应该能够返回正确编码的字符串,这样您就不需要在您的应用程序中重新编码它们。