【发布时间】:2020-01-25 18:20:53
【问题描述】:
我有一个应用程序,我想将一个 utf-8 编码字符串转换为 ISO-8859-1,因为这是我的 oracle DB 的编码。
目前这是我在我的数据库中插入的内容:
比利时«
但我希望这样:
比利时
当我在 java 中打印我的字符串时,我得到以下信息: 比利时«
谁能帮帮我?
这是我已经尝试过的:
System.out.println(xmlString);
Charset utf8charset = Charset.forName("UTF-8");
Charset iso88591charset = Charset.forName("ISO-8859-1");
ByteBuffer inputBuffer = ByteBuffer.wrap(xmlString.getBytes(utf8charset));
// decode UTF-8
CharBuffer data = utf8charset.decode(inputBuffer);
// encode ISO-8559-1
ByteBuffer outputBuffer = iso88591charset.encode(data);
byte[] outputData = outputBuffer.array();
xmlt = new oracle.xdb.XMLType(con, new String(outputData, iso88591charset));
来自 cmets 的建议也无效:
byte[] utf8 = xmlString.getBytes("UTF-8");
byte[] latin = new String(utf8, "UTF-8").getBytes("ISO-8859-1");
ByteArrayInputStream bis = new ByteArrayInputStream(latin);
xmlt = new oracle.xdb.XMLType(con, bis);
【问题讨论】:
-
通常需要数据库驱动来处理字符编码。您尝试过简单的
xmlt = new oracle.xdb.XMLType(xmlString)吗? -
请解释一下“UTF-8 编码字符串”是什么意思。你的意思是你有 UTF-8 字节,使用 UTF-8 以外的字符编码将它们解码为
String?
标签: java utf-8 character-encoding iso-8859-1