- PR -

Linux上でファイル名がMS932のファイルを開く

投稿者投稿内容
あぶぽん
大ベテラン
会議室デビュー日: 2005/10/20
投稿数: 205
投稿日時: 2007-03-30 16:23
インギさん、ありがとうございます。

引用:

file.encoding はリードオンリーのシステムプロパティです。



こういう実験結果もあります。

http://www.simeji.com/wiki/index.php?Java%A4%CE%CD%AB%DD%B5

本当のところどうなんでしょう?
あぶぽん
大ベテラン
会議室デビュー日: 2005/10/20
投稿数: 205
投稿日時: 2007-04-02 15:26
あしゅさん、インギさん、皆さん、お世話になります。

環境で解決できることは環境で解決する

という、鉄則はわかりつつ、
環境で解決するまでに少し時間がかかりそうなので、

少し悪あがきをしてみようかと思います。

日本語なのはファイル名だけで、途中のパスには日本語は含まれないので、
親ディレクトリのFileオブジェクトを取得して、
File#listFiles()で子ファイルのリストを取ってみようと思います。

ねらいは、子ファイルのFileオブジェクトのgetName()は、何を返すのか?
(Shift_JISか、UTF-8か、EUC-JPか)
そのFileオブジェクトでファイルが開けるか?

ということです。

そこで、教えていただけたらありがたいのが、
デフォルトエンコーディングと、ファイル名のエンコーディングが違うという
環境をどうやって作るかということですが、

手元にあるのはWindowsXPとMac OS Xだけです。
他のOSをインストールしている時間はとれません。

WindowsXPはともかく、Mac OS XはBSDベースなのだから何か方法がありそうに
思います。

よろしくお願いいたします。

引用:

あしゅさんの書き込み (2007-03-29 16:01) より:
Unicode <-> Shift_JIS系のマッピングはバラバラで統一性が無く、
Shift_JISの個々のバリエーションを区別しない環境も多いと思います。

JREにように厳密に規格に従おうとする製品は少数派でしょう。



JDK1.1.8のころは、JavaもShift_JISとMS932を区別していなかったようですね。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-04-02 17:54
引用:

あぶぽんさんの書き込み (2007-03-29 14:14) より:
このような場合、プログラムで解決する方法はありますでしょうか?


原則として、環境で解決すべき問題であり、アプリケーションで解決してはいけない問題だとは思います。

しかし、Java に限らず、たまに、アクセスできない・消せない、といったファイルが出来て困ることがありますが、こういう時にはフォルダー内のファイルを列挙する、ということで対処できる場合もあります。
Java だと、
http://java.sun.com./javase/ja/6/docs/ja/api/java/io/File.html#listFiles()
など(引数にフィルターを持てるメソッドもある)のような API で、一旦、目的とするファイルを入れているフォルダー内のファイルをすべて列挙し、その後、あらためてファイル名で合致するファイルを特定するわけです。
ただ、これをやっても、ファイル名で探せなかったり、ファイルを特定できてもいざアクセスしようと思ってもやっぱりアクセスできなかった、みたいなことはあるかもしれませんが、そうなったら諦めるしかないかもしれません。

スキルアップ/キャリアアップ(JOB@IT)