gpt4 book ai didi

java - 数据库中的编码问题

转载 作者:行者123 更新时间:2023-11-29 12:38:09 25 4
gpt4 key购买 nike

我有一个 postgres 9.2 数据库,编码是 UTF-8。我有一个应用程序(用 java 编写)来更新这个数据库,读取 .sql 文件并在数据库中执行它们。但是我发现了一个问题:在其中一个 .sql 文件中,我有以下指令:

insert into usuario(nome)
values('Usuário Padrão');

执行此操作后,当我转到表数据时,插入的内容是:"Usuário Padrã£o"

如果我直接从 pgAdmin 执行此命令,它会正确创建。所以我不知道这是数据库中的问题,还是执行脚本的程序中的问题。

---编辑---

这是我如何获得 JDBC 连接的:

public static Connection getConnection() throws SQLException{
Connection connection;
String url="jdbc:postgresql://"+servidor+":"+porta+"/"+nomeBanco;
Properties props = new Properties();
props.put("user", usuario);
props.put("password", senha);
connection=DriverManager.getConnection(url,props);
connection.setAutoCommit(false);
return connection;
}

这是我用来读取文件的代码,但这看起来是正确的,因为如果我打印从文件中读取的字符串,它会显示正确的字符串。

public static String lerArquivo(File arquivo){
StringBuilder conteudo=new StringBuilder();
BufferedReader br = null;
try {
br=new BufferedReader(new FileReader(arquivo));
String linha;
while((linha=br.readLine())!=null){
conteudo.append(linha).append("\n");
}
} catch (IOException e) {
FrameErroBasico f=new FrameErroBasico(null, true);
f.setText("Erro ao ler arquivo.",e);
f.setVisible(true);
}finally{
try{br.close();}catch(Exception e){}
}
return conteudo.toString();
}

最佳答案

这很可能是有问题的行:

    br=new BufferedReader(new InputStreamReader(new FileInputStream(arquivo), "UTF-8"));

(看来我的 Crystal 球还在正常工作!)

关于java - 数据库中的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17820443/

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