日本語の文字を含むいくつかのディレクトリ/ファイルがあります。私がファイルを読み込もうとすると(例として)クを含むファイル名(内容ではなく)を読み込もうとすると、containingを含むStringを受け取る。私がファイル/ディレクトリを作成しようとすると、ファイル/ディレクトリに?を含むファイルが現れます。Javaの読み書きUnicode/UTF-8のファイル名(内容ではない)
例: 私はファイルを一覧表示します。
File file = new File(".");
String[] filesAndDirs = file.list();
filesAndDirs配列には、この特殊文字を含むディレクトリが含まれるようになりました。文字列にはonlyだけが含まれます。これは、デコードするものは何もありません。なぜなら、getbytesは、異なる文字であっても、ファイル名の各文字に対して "-17 -65 -67"しか表示しないからです。
私はMacOS 10.8.2 Java 7_10とNetbeansを使用します。
アイデア?
は、事前にありがとう:)
これらのファイル名をどのように表示しているのか、また、常にString.getBytes()のエンコーディングを提供しているかどうかはわかりません。実際に何が起こっているかを見るために、ファイル名の各文字のUTF-16コードポイントをダンプする必要があります。また、ファイルの作成時に入力データをどのように取得していたのかは不明です。 –
'getBytes'は有効なUTF8と思われるものを返します –
@Janはい、有効なUT8のようですが、getBytesはすべてのcharに対して" -17 -65 -67 "を返します。ただし、ファイル名とディレクトリ名の文字列がすべて同じであるとは限りません。 OSとJavaVMの間のすべての情報が失われているようです。特殊文字ごとに "-17 -65 -67"が繰り返されます。 [a-zA-Z ...]が期待通りに返されます。私は少なくとも、各charごとに異なるバイトを期待します。 –