gpt4 book ai didi

java - 如何防止写入特殊字符

转载 作者:行者123 更新时间:2023-11-30 05:48:37 26 4
gpt4 key购买 nike

我正在使用 java 将 SQL 表导出到 txt 中。一切工作正常,除了一个负号问题,即某些字母上的重音符号。特别是我对“è”有问题,因为在我的txt文件中被转换成“Í”。我不知道为什么,但如果我尝试导出包含该字段的表的记录(因此单个记录写入),则没有问题;如果我尝试导出整个表(数千条记录),就会出现这个问题。

我已经尝试过 String 类提供的替换方法,但结果相同。我也尝试过在 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 是元数据结果集

最佳答案

我不知道您更改了哪个 Eclipse 设置,但我怀疑这会影响您的 PrintStream (它可能读取/呈现文件为 UTF-8)。

要设置 PrintStream 的编码,请使用适当的构造函数:

更改此行

PrintStream o = new PrintStream(myOutputDir + "\\" + array_query[x].substring(26) + ".txt");

PrintStream o = new PrintStream(myOutputDir + "\\" + array_query[x].substring(26) + ".txt", 
"UTF-8");

(或为您的数据库架构配置的任何编码。)

关于java - 如何防止写入特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54399182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com