Oracle 12.2数据库嵌入式Java机器中的getName()编码

时间:2017-10-13 08:42:50

标签: java oracle file encoding names

我们在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文档中找到任何提及。

问候,尤金。

1 个答案:

答案 0 :(得分:0)

Oracle支持部门重现了这个问题。

“无法从RDBMS 12.2.0.1 java存储过程中读取西里尔文件名。”

他们正在努力