繁体   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