我们在java源数据库对象中使用函数File.getName() 在Oracle数据库版本12中。 " file.encoding"财产是' WINDOWS-1251' 我们在12.1中获得了正确的文件名(Java 1.6) 在12.2中我们得到了错误的字符(Java 1.8) 代码是一样的。
create or replace and compile java source named "JavaFileEncoding" as
import java.io.*;
import java.nio.charset.*;
public class JavaFileEncoding {
public static String getCyrillicFileName() {
System.out.println("Default Charset=" + Charset.defaultCharset());
File f = new File("<Directory containing files with non-ASCII characters");
File[] list = f.listFiles();
for(int
i = 0
; i < list.length
; i++
) {
if (!list[i].isDirectory()) {
return list[i].getName();
}
}
return "";
}
}
/
File.getName()结果的确切编码是什么? 从Java 6到8有什么变化吗? 编码OS服务器(Windows)设置是相同的..或者我们应该检查 别的什么? 无法在Java文档中找到任何提及。
问候,尤金。
答案 0 :(得分:0)
Oracle支持部门重现了这个问题。
“无法从RDBMS 12.2.0.1 java存储过程中读取西里尔文件名。”
他们正在努力