【发布时间】:2019-06-21 06:57:16
【问题描述】:
我正在使用 java 将 SQL 表导出到 txt 中。一切正常,除了一个减号问题,即某些字母上的重音符号。 特别是我对“è”有疑问,因为在我的 txt 文件中被转换为“è”。 我不知道为什么,但是如果我尝试导出包含该字段的表的记录(因此写入单个记录),则没有问题;如果我尝试导出整个表(数千条记录),它会给我这个问题。
我已经尝试过 String 类提供的 replace 方法,但结果相同。我也尝试在 unicode 中使用 che 转义字符,但仍然是同样的问题。 有什么提示吗?
编辑 这是我的代码:
if(array_query.equals(versamenti_tasi)) {
File myOutputDir = new File("C:\\comuni\\prova\\009_001_Versamenti");
if(!myOutputDir.exists())
myOutputDir.mkdir(); //Returns a boolean if you want to check it was successful.
PrintStream o = new PrintStream(myOutputDir + "\\" + array_query[x].substring(26) + ".txt");
System.setOut(o);
while (rs.next()) {
out = "";
final_index = 0;
for(int i =1; i <= rsmd.getColumnCount(); i++) {
if(rs.getString(i) == null) {
final_index += rsmd.getColumnDisplaySize(i);
out += "" + str_valore;
out = out.substring(0, final_index);
}else{
final_index += rsmd.getColumnDisplaySize(i);
out += rs.getString(i).trim() + str_valore;
out = out.substring(0, final_index);
}
}
System.out.println(out);
}
简而言之,写作部分在循环中; str_valore 是一个 250 字符的空字符串,那是因为我需要获取该字段的原始数据库大小; rs 是我的结果集,rsmd 是元数据结果集
【问题讨论】:
-
那么,如何将这些表导出到文本文件中呢?您导出单个记录的方式似乎使用了与导出整个表的方式不同的编码。
-
要么是用于数据库的编码,要么是用于输出文件的编码。
-
@Hulk 我只是初始化了一个新的打印流并将其设置为我的默认输出,所以我可以使用一个简单的 system.out.println()。
-
请编辑问题以向我们展示您在做什么 - 在这两种情况下,一种有效,一种无效。某处有所不同,但只有看到代码才能发现。