我试图从oracle db中读取,该数据库以Windows-1252编码存储数据。我正在使用jdbc读取该数据并使用UTF-8编码写入xml文件。
在写这些文件时,我得到了'?'字符而不是拉丁字符,例如而不是í,我得到了一个?'Coquí'被写为'Coqu?'
我稍后使用此文件上传到solr。 我只把相关的代码放在这里而不是整个代码,因为它是一个很长的方法(我继承的遗留代码),这很复杂。
BufferedWriter result = new BufferedWriter(new FileWriter(OUTPUT_FILE));
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rst = stmt.executeQuery(sql);
if (rst.getFetchSize() < 1)
return;
rst.beforeFirst();
while (rst.next()) {
Profile p = new Profile();
p.business_name = rst.getString("business_name");
p.business_name_sort = rst.getString("business_name_sort");
result.write(p.business_name;
result.write(p.business_name_sort);
}
答案 0 :(得分:3)
通过它的声音(你还没有给我们相关的代码,所以我无法确定)你没有正确处理字符集转换。 Java不会为您执行任何自动字符集转换 - 您必须自己完成。
您可以执行以下操作将其转换为UTF-8:
String utf8Text = new String(originalText.getBytes("UTF-8"), "UTF-8");
这假设originalText
是包含Windows-1252编码文本的String
。