Windows Vista + cygwin環境下にて、

『07.テキスト管理表』といった特定の日本語の文字を含んだ
ディレクトリまたはファイルをcp,あるいはrsyncしようとすると、
cannot stat `ファイル名またはディレクトリ名` Not found directory or file.
とエラーになります。
日本語を別の文字に変えた場合はエラーが出ないため、原因の特定が難しくなっております。

このような場合、どのようにすればエラーを出すことなく日本語を含んだファイル操作を行えるのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/04/19 14:53:22
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:JULY No.1

回答回数966ベストアンサー獲得回数247

ポイント35pt

おそらく、Shift_JIS の取り扱いに関する問題だと思います。

Shift_JIS - Wikipedia

上記ページの「2バイト目が5C等になりうることによる問題」に詳しい話が書いてあり、これに該当する文字に「表」も含まれます。

ただ、cygwin 1.7.1 以降、デフォルトの文字コードが UTF-8 になり、Shift_JIS 固有の問題は無くなっています。手元の cygwin 1.7.7 on XP の環境では、上記のファイル名は問題なく扱えました。

下記のページに、cygwin 1.7 以降での日本語環境に関する解説があります。

Life with Cygwin 23

id:takets

ありがとうございます。

確認したところ、cygwinのバージョンは1.7.1以降でしたが、zshの文字コードがSJISのため問題が起こったのかもしれません。

2011/04/19 14:51:54
id:Galapagos No.2

回答回数963ベストアンサー獲得回数89

ポイント35pt

円マーク問題として知られているトラブルです。


Windowsのファイル名の実体はシフトJISコードで格納されています。

"07.テキスト管理表" の "表" は、シフトJISコードで 955C です。

ここで、5C はASCIIコードで \ (円マークまたはバックスラッシュ)に当たります。

つまり、ディレクトリ区切り文字と同じ \ なのです。

さらに、95 は ASCII コードに存在しない文字です。

このため cygwin は "07.テキスト管理表" を "07.テキスト管理?\" というディレクトリ(?は判別できない半角1文字)として認識し、ご質問にあるようなエラーになるわけです。


対処策としては、5C を含まない全角文字を使うしかありませんが、これをいちいちチェックするのは大変です。

cygwin でアクセスするファイル/ディレクトリは英数字に限定した方が無難だと思います。

id:takets

ありがとうございます。

固有の問題だったのですね。

2011/04/19 14:53:14

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません