簡體   English   中英

從Oracle讀取Windows-1252格式並寫入使用UTF-8編碼的Latin1字符的XML文件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM