プロが教える店舗&オフィスのセキュリティ対策術

windows7にてopendirを実行し、
僒僀僐僶僗僞乕僘_001.jpg  ※ここに書いたら文字化けしてるかも
などのファイル名が入ったフォルダを読み取ると、
"僞乕僘~1.JPG" や "僞EE94~1.JPG"
などのもとのファイル名とは違う文字列(と言うよりおそらくバイナリ自体がすでに違う)を得られます。

これについて困ってますが、解説や解決法、その他、なんでもいいのでお助け下さい。

(よくわかりませんが、もしかしてwindows先生に問題があるのではないかと言う疑いを持ちはじめても居ます。が、結局よく分かりません)。

A 回答 (2件)

>"僞乕僘~1.JPG" や "僞EE94~1.JPG"


は、古いOSから伝統的に引き継いでいる
 8キャラクタ文字+ピリオド(.)+3キャラクタ文字(拡張子)
形式の別名のファイル名です。
これはWindowsで作成したファイルにも存在し自動生成されます。
自動生成の時に失敗しているようなので、Windowsで扱えないキャラクタ文字を使用していると判断できます。
opendirの仕様が分かりませんが、Windowsで正常に読み書きできないキャラクタ文字を使っていることが疑われますね。
現状では読み込みは問題なく行えるでしょうが、読み込んだファイルを上書きすると何らかの障害が起きる可能性はあります。
ファイル名に使用する文字について良く確認したうえでopendirを使うことを勧めます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ファイル名はwindowsの内部的に複数用意されていると言うことでしょうか?

ファイル名を置換してまともなリネームしたいのですが、どのようにするのが良いでしょうか
(ところで、ファイラーによっても表示させた時表示するもじが違うのですが、その辺はなんなんでしょうか?)

とりあえず、番号順に並んでいる画像なので、"僒僀僐僶僗僞乕僘_001.jpg" のうち
001は取り出さなければならないのですが、opendirで取り出したファイル名からはその数字は失われているようです。

お礼日時:2016/07/20 20:37

Windows は、マイクロソフト社が以前販売していたOS(MS-DOS)とファイルの兼ね合いで、


「長いファイル名」と「短いファイル名」の両方を持たせ互換性を維持させています。
(実はこれ、結構有用だったりします)
実行時には一般的にどちらのファイル名を指定しても問題はありません。
これは Windows 95 から採用されているものです。

コマンドプロンプトで「dirコマンド」を実行すると、特に指定していない限り長いファイル名で表示されますが、
「/x」のオプションを付けて実行すると、短いファイル名で表示されます。
すべてのディレクトリ(フォルダ)でどちらのファイル名も存在することを確認してみると良いでしょう。

このように2つファイル名を持っているのがWindowsのシステムです。

…解説はこんなもんでいいでしょうか。
質問そのモノの回答はNo.1で行っていますのでそちらを参照願います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
検索して見ましたが、Win32::GetLongPathName()と言うのが用意されているのですね

お礼日時:2016/07/21 11:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!