- ベストアンサー
英語のハイフンは、日本語OSファイル名禁止文字?
- 英語環境のパソコンでは、ハイフンとマイナス記号は厳密に区別されているのか?
- 本物の英語のハイフン記号は、OSのファイル名禁止文字として扱われるのか?
- 英語キーボードには、ハイフンやマイナス記号以外の禁止文字が存在するのか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
何度も何度も考えなおしていたら、昨日は、途中で眠くなってしまいました。 こういう話は、後々、検索に引っかかりますから、あまりバカなことは書けません。 こちら側では、 ファイル名に使用できない文字を判断する http://frog.raindrop.jp/knowledge/archives/001079.html ここにあるC言語を、VB系に書きなおしましたが、ここでは、ちょっと発表はまずいかもしれません。簡単にいうと、「PathGetCharType 」というWin32 API関数を使い、一文字ずつ、チェックするというコードです。 Q'1: >ANSIキーボード圏の一般人がふつうにハイフンを打つ場合、「マイナス記号」で打ち込んでいる、と理解して間違いないですね? 私も、そう考えています。ただし、ネイティブの文章では、頻繁に以下のUnicode文字が現れます。これが逆に、英語を仕事とする日本人にとって、JISは、ANSIと互換性はあっても、Unicodeは互換性がありませんので、古いソフトなどでは、とても厄介な存在になることがあります。だから、英文を一括置換をしています。 「‑」2013 En dash 「 — 」2014 Em dash (数字は、Unicodeのコード番号) Q'2: >Firefoxが気を利かせた仕様でHTML上のTITLEタグをPDF保存ファイル名に自動反映 させていることがわかりました。 >場合によって何か制御文字が入ってしまうバグがあるかもしれない。 ここが試せればよいのですが、AdobePDFがありませんので試せません。エンコードしただけの文字なら、目視にて分かるはずです。ただし、エンコードとデコードの両方が行われていることはあるかもしれません。ご存知だと思いますが、HTML上のタイトルは、プログラムの命令で取出します。そうすると、ソースを書いた製作者側そのものの文字だと思います。プログラムでは、Web ブラウザの LocationName(IEの場合)で名前を取るだけだと思います。 >ANSI圏でハイフン(マイナス記号)を含むタイトル文字列で要注意、の可能性がある。 >と疑ってみたほうがどうやらよさそうですね? 少なくとも、Windows (2000以上)の場合は、上記の En dash等のUnicode独自の文字でもファイル名としてはエラーになることはないですが、ソフトウェア側は別問題です。それは、Unicodeを許しているソフトウェア(例えば MS-Office)でさえ、困った問題が発生するし、2byte文字がエラーが発生することがあるというのは、人は、自分の目の前で起こらない限りは、信じない人が多いものです。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
Windows のファイル名に記号が使えない! http://support.microsoft.com/kb/879124/ja ここを読んでも、今ひとつピンと来ないでしょうね。 >一般常識として、PC関係でも語学関係でも、いまさら聞けない低レベルな愚問だと思うのですが いいえ、そんなに簡単ではありません。ここのカテゴリの質問では基本的には専門的には答えませんが、OSの範囲の質問になります。過去に、私の発言がありましたが、プログラミング系でも、その程度しかありません。私のは、この程度のことが理解されなかったようです。ただ、昔も今も、一応、物理的な範囲を調べたほうが早いです。 http://okwave.jp/qa/q1966150.html NTFSでのロングファイルネームは拡張子を含めて255文字まで、名前には大文字と小文字を使用できるが区別はされません。使用できない文字は「?」「"」「/」「\」「<」「>」「*」「|」「:」 ショートファイルネームとして使えない文字は、制御記号、スペース、「"」「*」「+」「,」「.」「/」「:」「;」「>」「=」「<」「?」「[」「\」「]」「|」 (制御文字というのは、改行、復帰コード、ヌル文字、ESC、Tabコード、エスケープシーケンスなどが入ります) 純粋の英語環境パソコンというよりも、ANSI(A-Zと数字といくつかの記号)というはずですが、それを前提でお話します。 Q1:ハイフンとマイナス記号は厳密に区別されていますか? 基本的には区別されませんが、Unicodeで変わることがあります。しかし、Unicodeの範囲で、ブロックされる文字(Character)はありません。 Q2:ハイフン記号は、OSのファイル名禁止文字でしょうか? つまり、Unicode と Ansi では変わりますが、禁止されていません。 Q3:第三の「ハイフン・マイナスもどき記号」が英語キーボードには存在しているでしょうか? キーボード自体にはありませんが、文字としては、いくつもあります。Wordをお持ちなら、それで、特殊文字を調べていただければ分かるはずです。しかし、繰り返しますが、基本的に、Win XPでは、OSが、Unicodeを許していますから、その記号が使えないということはありません。 今回は、制御文字が混入したのではないかと思っています。
お礼
Wendy02さん 大変素晴らしいご回答をありがとうございます。 横道ですが、 http://oshiete.goo.ne.jp/qa/1966150.html ご提示頂いた参考過去問、後学のためにとても勉強になりました。 プログラミング上ではキャラクタ関数の使いこなし次第で 予約文字を表現させることも可能なんですね! そこで、誤解のない完全理解のために、もうひと押しよろしくお願いします。 ------- Q'1: >ハイフンとマイナス記号は厳密に区別されていますか? >基本的には区別されませんが、Unicodeで変わることがあります。 これだけでも今回大収穫でした。 文字コードによっては割り当てが一応区別がされているものの、 ANSIキーボード圏の一般人がふつうにハイフンを打つ場合、「マイナス記号」で打ち込んでいる、 と理解して間違いないですね? Q'2: >今回は、制御文字が混入したのではないかと思っています。 このWendy02さんの一文で、かなり実態解明に光が差してきた感じです。 今回の疑問が起きた英文ページのPDF保存をもう一度実施してみました。 環境はXP-SP3、MozillaFirefox上で、AdobeAcrobat経由のPDF保存をしました。 ふつうの仕様なら、PDF保存ファイル名は自分で命名しないといけない訳ですが、 Firefoxの印刷>AdobePDF の場合に限って、 Firefoxが気を利かせた仕様でHTML上のTITLEタグをPDF保存ファイル名に自動反映 させていることがわかりました。 ∴TITLEタグから保存ファイル名へ反映、自動変換、のFirefox側アルゴリズムに、 場合によって何か制御文字が入ってしまうバグがあるかもしれない。 その場合とは、ANSI圏でハイフン(マイナス記号)を含むタイトル文字列で要注意、の可能性がある。 と疑ってみたほうがどうやらよさそうですね? ------- 蛇足ですが、 Bugzillaに今回の件を提起してみようかな、と思い、 ハイフン(マイナス記号)入りTITLEタグのHTMLが全部問題になるか、自作HP(UTF-8)で実験してみました。 UTF-8エンコードのHTML + 日本国内販売のキーボードで打ったマイナス記号入りタイトル という組み合わせでは、「保存できないファイル名」エラーになりませんでした。 相手サイトの文字エンコード次第で発生したり、しなかったり、の問題みたいな気がしてきました。 英語の語学的な問題ではない、とわかりましたので気が引けるのですが、 Q'1とQ'2、もう一丁、揉んでいただけましたら幸いです。
お礼
Wendy02さん、 非常に密度の高いご回答を、今回も本当にありがとうございます。 そんじょそこらの高額なPCスクールよりも、Wendy02さんにご回答 頂くことで真の学習ができました。 > 「PathGetCharType 」というWin32 API関数を使い、一文字ずつ、チェックするというコードです。 なるほど!2000やXPになってからマイコンピュータ上での新規作成時 命名ならば自動補正されるのは、この関数のおかげだったのですね! > Q'1: > 「‑」2013 En dash > 「 — 」2014 Em dash なんと、見た目同じにしか素人には判別できないダッシュ記号だけでも 何種類も本当は別物としてマッピングされてるのですね! 本当に勉強になりました。 但し、ガイジンさんでも一般素人ならいちいちこだわらずに、 大概は「マイナス記号」で打ち込むのが大多数という現状。 ∴普通ならほとんど問題は発生しないで済んでいる、という種明かし だったことにになりそうですね。 No.1ご回答へのお礼文で私が自己実験したのは、この辺の事情がわから なかったため不十分だったことが見えてきました。 > Q'2: > HTML上のタイトルは、プログラムの命令で取出します。そうすると、ソースを書いた製作者側そのものの文字だと思います。 はい、私も仮定上ですが、そう確信していました。 Wendy02さんに補足ご回答を頂いた今思うに、ひょっとして enダッシュ、emダッシュを意図的に厳密に分けたHTMLタイトルをつけていた 可能性があるかも? という感じがしてきました。 (PC技術系のサイトでしたので、サイトオーナーは完璧主義者の可能性がありそうです) > ここが試せればよいのですが、AdobePDFがありませんので試せません。 これ以上Wendy02さんにご迷惑をおかけしてもいけませんし、 当初はMozilla側の問題かと思い込んでいましたが、間に介在したAdobeの 存在もありますので、大枚はたいてAdobeを購入した自分の宿題として、 今後機会あるごとにいろいろ実験してみようと思っています。 今回、まことにありがとうございました。 久々に本当に勉強が出来た充実感を覚えました!