[英]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.