[英]Reading from Windows-1252 format from Oracle and Writing to XML file with Latin1 characters UTF-8 encoded
我正在尝试从以Windows-1252编码存储数据的oracle数据库中读取数据。 我正在使用jdbc读取数据,并以UTF-8编码写入xml文件。
在写入这些文件时,我得到“?” 字符而不是拉丁字符,例如代替í,我得到一个?
“Coquí”正以“ Coqu?”的形式写入XML。
我稍后将使用此文件上传到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);
}
听起来(您没有提供给我们相关代码,所以我不确定),您没有正确处理字符集转换。 Java不会为您执行任何自动字符集转换-您必须自己完成。
您可以执行以下操作将其转换为UTF-8:
String utf8Text = new String(originalText.getBytes("UTF-8"), "UTF-8");
假定originalText
是一个包含Windows-1252编码文本的String
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.