2017-10-13 17 views
0

Java 소스 DB 오브젝트 에서 File.getName() 함수를 사용하고 있습니다. "file.encoding"특성은 'WINDOWS-1251 ' 12.1 (Java 1.6)에 올바른 파일 이름이 있습니다. 12.2에서 잘못된 문자 (Java 1.8)가 발생했습니다. 코드는 동일합니다.Oracle 12.2 데이터베이스 내장 Java 머신에서 getName() 인코딩

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 설명서에서 언급을 찾을 수 없습니다.

감사합니다, Eugene.

+0

출력을 표시하십시오. 'File.getName()'은 (당신이 염려하는 한) 인코딩을 가지고 있지 않은'String'을 반환합니다. – Kayaman

+0

12.2 : GETCYRILLICFILENAME() ------------------------------------------- ------------------------------------- i? eaao.txt 12.1 : GETCYRILLICFILENAME() ------------------------------------------------- ------------------------------- привет.txt –

+0

기본 charset은 무엇입니까? – Kayaman

답변

0

오라클 지원팀에서 문제를 재현했습니다.

"RDBMS 12.2.0.1 Java 저장 프로 시저에서 키릴 문자 파일 이름을 읽을 수 없습니다."

그들은 작동 중입니다.