该文件由Oracle生成,而且查询数据库字符集,显示的也是AL32UTF8,但用Oracle打开文件后,中文会乱码:
但文本直接复制粘贴到数据库就可以正常显示。
想请教一下,这种情况是否有相应的代码可以解决呢?或者对数据库进行设置可以解决呢?
目前所使用的生成文件代码如下:
求解答,多谢多谢!
如果 Oracle 数据库的字符集是 AL32UTF8,并且直接复制粘贴到数据库能正常显示,那么文件的字符集问题可能是产生乱码的原因。
解决方案如下:
1.修改文件的字符集:把文件的字符集转换为 AL32UTF8,并以该字符集的格式重新生成文件。
2.在读取文件时设置字符集:使用特定的字符集读取文件,并在读取过程中进行字符集转换。
在 Java 代码中,可以使用 InputStreamReader 和 OutputStreamWriter 类来指定字符集。
举个例子:
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
FileOutputStream fos = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(fos, "AL32UTF8");
BufferedWriter bw = new BufferedWriter(osw);