How to prevent writing of special character
本问题已经有最佳答案,请猛点这里访问。
我使用Java将一个SQL表导出到TXT中。除了一些字母上的重音符号的减号问题外,其他都可以。特别是我对"_"有问题,因为在我的TXT文件中,它被转换为"?""。我不知道为什么,但是如果我尝试导出包含该字段的表的记录(因此只写一条记录),就没有问题;如果我尝试导出整个表(数千条记录),就会出现这个问题。
我已经尝试过字符串类提供的替换方法,但结果相同。我还尝试使用Unicode中的che转义字符,但仍然存在相同的问题。有什么暗示吗?
编辑以下是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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个字符的空字符串,这是因为我需要取该字段的db原始大小;rs是我的resultset,rsmd是元数据resultset。
我不知道您更改了哪个Eclipse设置,但我怀疑这会影响您的
要为您的
更改此行
1 |
到
1 2 |
(或为数据库模式配置的任何编码。)