2017-10-13 4 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ドキュメンテーションに何も記述されていません。

よろしくお願いします。

+0

出力を表示します。 'File.getName()'は(あなたが関係する限り)エンコーディングを持たない 'String'を返します。 – Kayaman

+0

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

+0

そして、デフォルトの文字セットは何ですか? – Kayaman

答えて

0

Oracleサポートは、問題を再現しました。

"RDBMS 12.2.0.1 javaストアドプロシージャからキリル文字ファイル名を読み取ることができません。"

彼らはそれに取り組んでいます

関連する問題