FAT32(?)で使えない文字の扱い

 「/」(半角のスラッシュ)を含むファイル名で試しました。
 Pantherでは、この文字を名前に含むファイルを Windowsで使える外部HDDやUSBメモリ(おそらくFAT32?)に書き込もうとすると、エラーになって、書き込めません。
 Tigerになって、なぜか書き込めるようになったようです。それをPantherに持ってくると、ファインダでは四角に何か入った記号に見えて、それをTextEditにコピーすると?(万年筆)に見えます。WindowsXPではその文字は見えませんが、カーソルを動かしてゆくと見えない文字があることは分かります。
 Pantherの対応の方が正しいように思うのですが、いかがでしょうか。

投稿日 2005/06/18 23:56

返信: 22

2005/06/19 00:45 Community User への返信

もともとOSXは BSD 由来です。BSD では"/" はディレクトリーの区切り記号です。ファイル名に使えなくても不思議ではないと思いますが。いろいろな OS で使うのなら、各OS のディレクトリー区切り記号などはファイル名には使わないようにする方が安全です。予期できない振る舞いで苦労の種になりがちです。

2005/06/19 08:05 Community User への返信

確認しました。
私はこの仕様変更を改良として評価します。
Pantherの場合、MS-DOSディスク(FAT32など)に多数のファイルをコピーする際、そのなかに半角スラッシュ入りのファイルが少し混ざっているだけで、エラーになり、面倒な思いをしていました。これで、Windowsでも一応は扱える訳ですから、改善です。
しかし勝手にファイル名が変わるのは問題です。せめて、コピー時にダイアログを表示してユーザーに判断を求めるべきです。
また、MS-DOSディスクを直接マウントしたときは、半角スラッシュ入りのファイルをコピーできますが、共有ボリュームとしてWindowsのフォルダをマウントしたときは、Pantherと同様にエラーがでます。一貫性がありません。
MS-DOSディスクに入れた半角スラッシュ入りのファイルを、Windowsでマウントしてコピーします。このファイルのあるフォルダを共有ボリュームとしてTigerでマウントした場合、ファイル名の半角スラッシュ部分が化けてしまいます。
元の半角スラッシュで表示され、Macにコピーしたときは半角スラッシュに戻るべきでしょう。
以上の3点について、アップル社にフィードバックしました。
P.S.
上記のMS-DOSディスクをPntherでマウントすると、半角スラッシュ部分が文字化けします。Mac間でファイルをやり取りする場合は、これまでどおりにHFS Plusのディスクを使うべきでしょう。
// 野尻隆裕(Tell Us と Feedbackの記録「拝啓 アップル様」) //
// コピーワンス放送は視聴者の権利を侵害します(受信拒否宣言)//

2005/06/19 22:01 Community User への返信

はにさん、野尻さん、ありがとうございます。
おっしゃる通り、現実的な対応としては、このような文字を使用しない、あるいはHFS+ディスクを使用するというのが最も適切です。
また、曲がりなりにもそのようなファイル名を使用できるようになったという点を評価するというのも一つの考え方として納得しました。
すでにフィードバックまでしていただいたとのことで、その点もありがとうございます。
「勝手にファイル名が変わる」というのは、禁止文字に別の文字コードを与えることで、書き込みを可能にしたという理解でよろしいんでしょうか。そのためにPantherで見ると化ける?それは大問題ですよね。Appleとしては、こういうことをするなら、ちゃんとアナウンスしてほしいところです。

2005/06/20 05:27 Community User への返信

>すでにフィードバックまでしていただいたとのことで、その点もありがとうございます。
仕様の不備であってもバグではないので、放置するとそのままかもしれません。
よろしければ、tentuckさんもフィードバックしてください。
>勝手にファイル名が変わる」というのは、禁止文字に別の文字コードを与えることで、書き込みを可能にしたという理解でよろしいんでしょうか。
はい。MS-DOSディスクを直接マウントしている場合、HFS Plusディスクにコピーすると、元の文字コードに戻ります。
>そのためにPantherで見ると化ける?
はい。試したときに思わず嗤ってしまいました。
>Appleとしては、こういうことをするなら、ちゃんとアナウンスしてほしいところです。
デベロッパ向けの文書には書かれているのかもしれませんけどね。確認していないです。(^^;
// 野尻隆裕(Tell Us と Feedbackの記録「拝啓 アップル様」) //
// コピーワンス放送は視聴者の権利を侵害します(受信拒否宣言)//

2005/06/20 06:29 Community User への返信

>しかし勝手にファイル名が変わるのは問題です。せめて、コピー時にダイアログを表示してユーザーに判断を求めるべきです。

ユーザに連絡なしにファイル名を変えてしまうのはよくないように思えますが、ダイアログ表示して判断を求める方が、インターフェース的には、悪いと思います。
ユーザは、ダイアログなど出てほしくないと考えているからです。OS 側がよきに計らってくれているなら、何も通知されなくていいのです。
ウチではまだ検証してませんが、どのような文字に変更しているのか確認されているのでしょうか? この、変更された文字があまりに不都合であれば、元のように「エラーになる」に戻す方が、より優れているのではないでしょうか?
AFP では、ユーザに通知なしの文字変更はけっこう行なわれています。そういうのもいちいちユーザに通知されないといけないのでしょうか? そんなわけないですよね。今回のはそれと同じです。
# 余談ですが、野尻さんのフィードバック運動はよいことだと思うんですが、
# その提案内容が時々「的外れ」だったり「センスが悪い」ものがあったりするのは残念です。
# 「フィードバックに対するフィードバック」をしたくてたまらないときがあります:-)

2005/06/20 21:34 Community User への返信

今手元にある環境(Panther10.3.9, REALbasic 5.5.4J )で調べられる範囲で例の"/"のコードを調べてみました。
本当はTigerで同じことをやってどうなるかを見ないといけませんが、職場にしかないもんで、すぐにはできません。
PantherでlocalのHFS+のディスクに作ったファイルをPantherで見た場合 47 = 0x2f
TigerのFat32のUSBディスクに作ったファイルのをPantherで見た場合(例の四角の記号) 61474 = 0xf022
確かに別のコードになっています。他にもこういう文字が存在するはずですね。そうすると、ファイル名の一意性がTiger/Panther間で保てないってことですね。
Tigerでのコードを確認してからfeedbackすることにします。

2005/06/20 21:39 Community User への返信

>どのような文字に変更しているのか確認されているのでしょうか?
下記のページをご覧ください。画面例を載せました。
Windowsでの表示:スラッシュが消えていますが、見えない文字があります。
http://homepage.mac.com/nojiri/macosx/feedback41.html#mtfat1
Windows上にある同ファイルを、ファイル共有してMacでみたときの表示
(または、同ディスクをMac OS X 10.3でみたときの表示)
http://homepage.mac.com/nojiri/macosx/feedback41.html#mtfat2
>その提案内容が時々「的外れ」だったり「センスが悪い」ものがあったりするのは残念です。
ぜひ、アップルへフィードバックしてください。
私にもメールしてくださると、今後の参考になります。
@@以下、本題@@
>変更された文字があまりに不都合であれば、元のように「エラーになる」に戻す方が、より優れているのではないでしょうか?
ユーザーの用途によると考えます。
用途1)USBメモリなどにMac用のファイルを保存したい場合
用途2)ファイルをWindowsへ持ち込みたい場合
用途3)DTPソフトのように、メインのファイルと、これに相対パスでリンクされたファイル群を扱う場合
用途1の場合、ファイル名の変化が可逆的で、元の環境に戻したときに元のファイル名に戻るのであれば、どのような変化であっても構いません。
用途2の場合、全体が文字化けして読めないのでなければ、特に支障はありません。現在の仕様では、この用途にも適しています。(あの見えない文字がWindowsの動作に影響を与えないのであれば、です)
用途3の場合、ファイル名が変化することは許されません。事前に警告し、コピーを中止するか、ファイル名とリンクを修正する余地を与える必要があります。
私はダイアログを表示させるようフィードバックしました。理由は、このような事態にはあまり遭遇しないと考えたためです。それならば、ダイアログが最適だろう、と。
しかし、頻繁にあり得るのであれば、システム環境設定で、設定を選べるようにしたほうが良いでしょう。ユーザーが自分の主な用途を考えて、設定を選べますから。
// 野尻隆裕(Tell Us と Feedbackの記録「拝啓 アップル様」) //
// コピーワンス放送は視聴者の権利を侵害します(受信拒否宣言)//

2005/06/21 06:56 Community User への返信

>下記のページをご覧ください。画面例を載せました。
>Windowsでの表示:スラッシュが消えていますが、見えない文字があります。
具体的な文字コードを調べられていると思ったのですが、画面表示だけでしたか……。それではあまり意味がないですね。
>ぜひ、アップルへフィードバックしてください。
>私にもメールしてくださると、今後の参考になります。
前者については、すでに実施ずみです。後者については、するべきかどうか悩んでいましたが、今後はする方向ですすめます。
さすがに、あれだけの量のフィードバックをするとなると、すべてが完璧な内容にするのは無理で、多少は変てこな内容にあるのは仕方ないと思います。その意味で、フィードバック内容を公開して、他人からのツッコミを受けられるようにしているのは、すばらしいと思います。なかなかマネのできることではありません。
(ほめ殺しではなく、素直にほめています)
>用途3)DTPソフトのように、メインのファイルと、これに相対パスでリンクされたファイル群を扱う場合
そんな場合は、そもそも、日本語ファイル名や特殊文字を使う方が間違っています。ファイル名でリンクする場合は、どんな環境でも問題ないファイル名にしないといけないでしょう。
Mac OS 9 までは、エイリアスと同じ仕組み (FSSpec) でファイルを特定する方法が推奨されていたので、ファイル名が変化しようが問題なかったのです。Mac OS X では、ファイル名ベースになってしまったようなので、ファイル名が変化すると困るかもしれません。
>私はダイアログを表示させるようフィードバックしました。理由は、このような事態にはあまり遭遇しないと考えたためです。それならば、ダイアログが最適だろう、と。
スラッシュ以外にも、ファイル名を勝手に変更 (mangle というらしい) する文字は沢山あるのですが、それらもすべてダイアログ表示するべきなのでしょうか? Unicode の異字体を使ったファイル名はすべて mangle されるようですよ。
わたしは、これらの mangle 処理はユーザに透過的に行なわれる方がよいと考えています。いちいちダイアログで処理を聞いてくるのはうっとおしく、作業効率が格段に落ちます。
Windows ユーザにディスクを渡すとかで、ファイル名が変化して困る場合は、最初からヤバイ文字を使わないのが正しいでしょう。スラッシュ、コロン、アスタリスクなどの記号は当然として、日本語ファイル名ももっての外でしょう。
ファイル名には、a-z0-9_-+=,. ぐらいの文字だけ使っておけば、まずトラブルは起きません。

2005/06/21 07:28 Community User への返信

>TigerのFat32のUSBディスクに作ったファイルのをPantherで見た場合(例の四角の記号) 61474 = 0xf022
わたしも実験してみました。Tiger で USB メモリ (iPod shuffle とも言う :-) にスラッシュを含むファイル名を作ってみると、その部分は 0xec 0x5f になりました (shuffle を Windows にマウントさせて Cygwin Bash Shell で確認)。tentuck さんとちょっと違いますね……。スラッシュの前後の文字に依存するようです。
そもそも、FAT32 ボリュームを Mac にマウントしたときと Windows にマウントしたときでは、文字コードそのものが違っているようです。Mac では Unicode になっているのに対し、Windows では (日本語ファイル名は) Shift_JIS っぽいです (おそらく、ボリューム上は Shift_JIS で、Mac OS 側でコード変換してユーザに見せている)。
スラッシュのコード変更も、こういう文字コード変更の一環として処理されているように思えます。
>そうすると、ファイル名の一意性がTiger/Panther間で保てないってことですね。
特殊文字を使っているなら、仕方ないでしょう。Mac だけで使うならできるだけ一意になるように仕様策定されていると思いますがWindows でマウントしたときに違いは出るのは致し方ないです。
Windows ではファイル名に使えない文字を Mac で使っていて、それを Windows にマウントさせようとするのが強引なのです。OS をまたいでファイル交換するなら、最初から、どんな OS でも問題ない文字を使うべきでしょう。
とはいえ、Mac OS 9 まではスラッシュはふつーに使えていたので、Mac OS X でも使えるようにする、という要望があるのは事実でしょう。それに応えている Apple は大したものだと思います。

2005/06/21 20:59 Community User への返信

>フィードバック内容を公開して、他人からのツッコミを受けられるようにしている
これまでにも、何度もツッコミをいただいて、直しています。(^^;
直す前の情報も載せているので、「こっそり変更」というものはないはずです。(誤字などは除く)
>ファイル名が変化して困る場合は、最初からヤバイ文字を使わないのが正しいでしょう。
ユーザーとしては、この意見に賛成です。実際、半角スラッシュは使いませんし、ホームディレクトリ内のフォルダも英数字が多いです。
ですが、「ユーザーが自衛すべし」はOSメーカーの採るべきスタンスではないと考えます。むしろ「OSが許す範囲でユーザーが何を行っても、それによって破綻しないOSを作る」ことが求められるのではないでしょうか。
P.S.
文字コードの変化については、UnicodeとShift-JISの間での変化のようなある程度まで規則的なものなら、OSやアプリケーションが吸収できるのではないでしょうか?ですが、今回の禁止文字種の置き換えの場合、Appleの独自仕様ですから、Window環境ではOSやアプリが吸収するとは期待できません。その意味で特別視しています。
なお、今回の件で一番問題なのは、Mac→ローカルボリュームのFAT32→Windows→LAN経由でMacへ、といった流れでファイルが戻ってくると、最初とは別のファイル名になってしまっていることです。
// 野尻隆裕(Tell Us と Feedbackの記録「拝啓 アップル様」) //
// コピーワンス放送は視聴者の権利を侵害します(受信拒否宣言)//

2005/06/21 22:03 Community User への返信

同じ方法でTigerでどうなるかはまだ試せていないのですが、試した環境がREALbasicであるところが、自分でやっていてちょっと不安なところです。REALbasicが勝手に変換してしまっている可能性があるからです。
まあ、ともかく、明日にはやってみます。
もちろん、こういうコード変換は「普通の人」には透過的になされればいいと思いますが、変換するならするで、そのポリシーを明らかにして明示してもらいたいというのが僕が現在思っているところです。
もしかして、どこかに書かれていますか、Appleさま?

2005/06/22 06:53 Community User への返信

>これまでにも、何度もツッコミをいただいて、直しています。(^^;
では、今後はどしどし意見を送らせていただきますです。
>文字コードの変化については、UnicodeとShift-JISの間での変化のようなある程度まで規則的なものなら、OSやアプリケーションが吸収できるのではないでしょうか?
それが理想ですね。でも、Unicode の規約自体が少し幅がありますし(濁音・半濁音の扱いなど)、Shift_JIS も OS による差異があります。具体的には、「MacJapanese」という、Shift_JIS に林檎マークなど加えた Apple 独自拡張と Windows 仕様 (正式名称忘れました) の、丸数字など機種依存文字を加えた拡張です。
そういう違いをうまく吸収して、完全に破綻のないような仕組みにするのは、まず無理だろうと思っています。
>なお、今回の件で一番問題なのは、Mac→ローカルボリュームのFAT32→Windows→LAN経由でMacへ、といった流れでファイルが戻ってくると、最初とは別のファイル名になってしまっていることです。
もう、それはそんな使い方をする方が悪いのでは、と思います。
確かに、コンピュータの都合をユーザに押しつけるのはよくないのですが、残念ながら、現状では「相手の都合を考える」ことが必要です。つまり、Windows で使う可能性があるなら Windows で使えない文字をファイル名に含めていはいけないでしょう。
少なくとも、今回の「スラッシュ文字拡張」は Mac OS X だけで使うときに破綻しないように設計していると思われるので、それを Windows 環境に持っていって「不具合がおきた。どうにかしろ」と言うのは、過大な要望だと思えます。
# あとは、FAT32 なんて今どき使うな、ということでしょうか。NTFS ボリュームでどうなるか追試してみます。

2005/06/22 09:35 Community User への返信

Tigerで同じ方法(REALbasic使用)でコードを見ました。
/ on local HD = 0x2f
/ on USB disk(FAT32) = 0x2f
  → これはTigerがmangleしてるってことですね。
/ on local (copied from FAT32 disk on Panther) = 0xf022
http://www003.upp.so-net.ne.jp/hat/netatalk/
このページを見ると、多分かなりのことが書かれてあるんだとは思うんですが、読み解くだけの力が無いです。。。
Mac同士のファイル交換にはHFS+を使え。なるほど、正しいですが、普通に売ってるUSBディスクってFAT32で、あまり何も考えずにWindowsにも差したりもするので、FAT32のままの方が便利なんですよね。。。
ということで、僕の結論としては「FAT32のようなApple的には標準ではないファイルシステムにmangleしてでも禁止文字を書き込めるようになったという点は評価するが、こういう仕様変更を行ったときには、早急に多くの人に分かりやすいように開示してくれ」という感じでApple(US)にfeedbackしてみることにします。

2005/06/22 10:05 Community User への返信

>あとは、FAT32 なんて今どき使うな、ということでしょうか。NTFS ボリュームでどうなるか追試してみます。
TigerでもNTFSには書き込めないと聞いています。(未確認)

2005/06/22 10:25 Community User への返信

>>TigerでもNTFSには書き込めないと聞いています。(未確認)
 ローカルでは書き込めませんが、ネットワーク越しには未確認。
 UDFとかNTFSで書き込めれば、親和性が高いと言えるんですけど。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

FAT32(?)で使えない文字の扱い

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。