• ベストアンサー

日本語のファイル名は使いたくない。

いつもお世話になっております。 表題の通り、 WEBサイトを構成する際に、ファイルのアップロードとダウンロード機能を実装しようとしています。 しかしファイル名に日本語を使うと、問題が色々と出てきて推奨されていない事は想像に難しくありません。 その裏づけを取るために色々とググったのですが、 「日本語ファイル名を使わないほうがいい」というサイトの殆どが見解どまりであり、 公式な(例えばW3Cなど)機関が発行しているサイトを見つける事ができませんでした。 ご存知でしたらご示唆いただけませんでしょうか。 どこそこ機関のhtml仕様やwebサイト構築の国際水準等で ファイル名に日本語を使う事は推奨しない! みたいな事が書かれていればすごく嬉しいです。 もしくは、UTF-8で構成されているWEBサイトにおいて、 ファイルダウンロード時だけは日本語ファイル名に対応する為に(IE6用とか)htmlヘッダをshift-jisで偽装する方法・・・を否定するような記事とか、 そもそもwebサイトにshift-jisを使うのはこれからナンセンスだよ。 みたいな公式な記事があれば幸いです。 お手数ですが、 宜しくお願い致します。 経緯をご説明しますと。 客が分かってくれない(笑)

この投稿のマルチメディアは削除されているためご覧いただけません。
  • HTML
  • 回答数4
  • ありがとう数9

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

ファイル名に日本語は使えますよ。 ある工夫が必要ですけどね。 使ってはいけないとあるのはRFCのとおりURL(など)のことで、ファイル名のことではありません。 つまり、ファイル名に一致するようにURLを作れば、自由に日本語名のファイルを作れます。 で、その工夫ですけど、 (1) まずファイル名に日本語を指定できること。 日本語ファイル名に対応したOSを用意して下さい。 (2) 次にそのファイル名とURLを一致させる作業をする。 URLの規定で日本語は扱えませんから、文字コードを%00などの書き方に変換(URLエンコード)する必要があります。 そのエンコードの時に、Windowsではファイル名の文字コードがShift_JISですので、Shift_JISで%00に変換し、LinuxやFreeBSDではEUC-JPですからEUC-JPで変換します。 MacOS Xは不明。Shift_JIS、UTF-8、EUCのいずれかだと思いますが、Apache、HTTP経由でアクセスできませんでした。 環境依存ですので、OSの設定を変えていればこれら以外の文字コードになります。 (3) そのエンコードした物を<a href="">に指定すると、日本語名のファイルにアクセスできるようになります。 このURLエンコードをブラウザに任せると、 <a href="日本語.txt"> などと簡単に書けますが、 HTMLファイルがUTF-8ならUTF-8で%00形式に変換したりして、ファイルにアクセスできなくなることがあります。 (URLエンコードするときの文字コードと、ファイル名の文字コードが一致しない) また、アドレス欄に日本語のまま入力しても同様にアクセスできなくなることがあります。 文字コードに関して理解していないと作れない、作業が面倒という理由で、「しない方が良い」と言われているだけです。 ユーザビリティー・アクセシビリティーとしては、「ユーザーが読みやすいと思えば、制作に対して労力は惜しんではいけない」が基本ですから、 たとえばファイル名に単語を並べる「about-html-making.html」という作り方があります。 URLをみれば、その内容が推測できるという方法です。 同様に、日本人向けには日本語のファイル名を推奨するところですが、 上記(1)の理由で国際化を考えると無理がありますので、 「その国の人に対してのユーザビリティー」か、「国際的なユーザビリティー」かを選ぶなら、 やっぱり国際的な方が推奨されると思います。 > そもそもwebサイトにshift-jisを使うのはこれからナンセンスだよ。 ウェブページはすでにShift_JISはナンセンスになっています。 > 公式な(例えばW3Cなど)機関が発行しているサイトを見つける事ができませんでした。 たぶん、ないんじゃないでしょうか。 OSの問題はHTMLやHTTPの管轄からはずれていますしね。 > 経緯をご説明しますと。 > 客が分かってくれない(笑) ユーザビリティーというのは、基本的に利用者が絶対です。 「日本語のサーバーだし、日本人向けのページだから」と言われればそれまでです。 適当にごまかすしかないと思います。 日本語の作り方を教えなければ、「アクセスできなくなる」で通じるんじゃないでしょうか?

Unripe01
質問者

お礼

なので、(1)の対応をしようと思うのですが、 残念な事に .NET Framework では、構成ファイル globalization エントリ responseEncoding 属性の設定に関わらず、HTTP ヘッダを UTF-8 でエンコードして送信してしまうみたいです。 http://support.microsoft.com/kb/436616/ja つまり、無理やりダウンロードさせると、今度はIE上で日本語のファイル名が化ける。 という事で、 (1)Excel2000側での文字化け (2)IEの文字化け 2重で文字化けに悩んでいるのです。 S-JISをURIエンコードしたらいけるか?と思いましたが、 サーバー側でハイパーリンクを作る際に、 ファイル名をs-jisにエンコードした結果をURLエンコードしてもダメでした。(多分検討違い) 仕方がないので ASP.NET 2.0 から追加されたresponseHeaderEncoding 属性を使ってhttpヘッダをS-JISに指定し、ファイルをダウンロードさせる予定です。 以上、現在小生の見解と対応方針です。 もし、上記文面の中に何か見当違いの事があればご指摘いただければ幸甚です。 問題はまだ解決していない状態ですので、 まだ回答を受け付ける状態にしている事をご容赦ください。 最後になりましたが、小生の現状はPGという立場で、 「できない」理由付けが間に合わず SEさんが既に「対応可能」という事で進めてしまいました。 それゆえ、 >>日本語の作り方を教えなければ、「アクセスできなくなる」で通じるんじゃないでしょうか? ができなくなってしまった状態です(^^A) 解決後、必ずフィードバックを行います。 よろしくお願い致します。

Unripe01
質問者

補足

長くなったので補足とお礼で1まとめで回答させていただきます。 とても詳しいご説明とご指摘をいただきありがとうございます。 talooさんのご回答、今後WEBサイトの構築にてとても参考になりました。 フィードバックを兼ねて、 現状の開発環境についてご説明しておきます。 開発言語はVB.NET(ASP) Framework 2.0 での開発となっています。 既に稼動しているファイルのUP/DL機能については、ファイル名に制限を設けておらず、サーバー側のファイル名に対して、URLエンコードしたハイパーリンクを表示させてファイルへアクセス可能なようになっています。 .NETの機能で、HyperLinkクラスというものがあり、こいつにファイルの物理パス(未エンコード)を指定してやると、ブラウザ側にURL円コードされたリンクが作成される仕組みとなっています。 これが、 >>(2) 次にそのファイル名とURLを一致させる作業をする。 の事だと認識しています。 で、この度のご質問の発端はここから・・・ ある日、Excel2000で作成したファイルをアップロードした後、そのファイルへのハイパーリンクをクリックして(ブラウザで)開き、名前を付けて保存したらファイル名が化けたという相談が入りました。 (顧客環境では、Excelのリンクをクリックするとダウンロードダイアログは開かずにブラウザで開かれます。) 確信は持ってませんが、Excel2000はUTF-8の文字コードに対応していない為、URLエンコードされたファイル名(%00)をうまく認識できないのでは? と思ってます。ちなみに、Excel2003がインストールされているマシンでは上記現象は発生しません。 ここで考えられる対応は、 (1)Excelで開かせない(httpヘッダにoctet-streamを指定して無理やりブラウザのダウンロードダイアログを表示させる) (2)他が思い浮かばないです↓

その他の回答 (3)

noname#108428
noname#108428
回答No.3

HTML等の言語の仕様だけでなく、 Webサーバに搭載されたOSの ファイル管理の仕様も参照されると、 顧客への説明に適した切り口が 見るかるかもしれません。

Unripe01
質問者

お礼

アドバイスありがとうございます! ちなみに開発環境 .NET2.0 WEBサバはWindows2003 IIS5.2 R2 ですね。 基本的にはS-JIS管理で問題ないところがまた憎いところです。 IISの方についても、MSが 「globalization 要素に responseHeaderEncoding 属性が用意され、これにより HTTP ヘッダのエンコード方式を指定できるようになりました。」 なんて言ってるもんだから誤解を値かねない。 もうちょっと掘り下げて考えて見ます。 ありがとうございました!

  • junkUser
  • ベストアンサー率56% (218/384)
回答No.2

ファイル名でファイルを保存する設計そのものに問題があります。 通常は保存したファイルを連番などで保存し、ダウンロードするときに日本語に変換します。 ファイル名は日本語に限らず、シングルクオートやダブルクオート、[]()が入る可能性もあるため、設計を見直すべきです。 頑張ってください。

Unripe01
質問者

お礼

ご指摘ありがとうございます。 当方、基本的な設計方針はファイルそのものをバイナリでDBに登録する方法を採用していました。 (そういえばASP.NETでファイルのダウンロード時に名称の変換を行うと、WEBサイトのファイル名が付いてしまう現象があったような・・・ちがったかな。) ちなみに弁解させていただくと、既に本番稼動しているシステムの改修です。 サーバー側にファイルが生で存在していて、ファイルパスへの参照をハイパーリンクで(URLパス)表示してダウンロードさせている仕様です。 一応動いているようなのですが、Excel2000やUTF-8に対応していないアプリが直接起動するような場合に、「名前を付けて保存」で文字化けが発生しています。 ダウンロード専用ボタン等を実装するか、ダウンロード専用ページをワンクッション挟んでハイパーリンクに表示させる(ファイル名はURLエンコードされるので日本語が含まれるダウンロードパスは別途考えるとして)と思いましたが、今度はIE6のUTF-8のファイル名文字化け問題が出てくる・・・ そうなるとヘッダ偽装しかないなと。。。 でもできることなら右クリックで保存したら解決じゃないか。。。それはだめなのね? って感じです。 ファイル名の問題については、開発者目線では重要なのですが、営業SE目線ではそうでもないようですね。 頑張ります!

Unripe01
質問者

補足

お礼の所に補足を書き込んでしまったのでこちらに。 一応・・・その既に稼動している設計は ファイルの置き場所:なまでサーバーに ファイルパスの保存場所:DBでhttp://~ ファイルパス  になっているので、つまるところハイパーリンクのアドレスさえ叩けば誰でもDL可能になっているという仕様です。 今後色んな課題が出てくると思います。 ご指摘、ご回答ありがとうございます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

rfc2396とか

Unripe01
質問者

お礼

アドバイスありがとうございます。 rfc・・初めてちゃんと見ようと思います。。。お恥ずかしい。 まだまだ未熟者ですが頑張ります。 ありがとうございました!

関連するQ&A

  • 日本語ファイル名のバックアップ

    WEBサーバーの中に日本語のファイル名のデータがありまして、ローカルにFTPソフトでバックアップを取りたいと思いますが、FFFTPで文字コードをutf-8にチェックすると、日本語のファイル名はダウンロードできるのですが、ファイル名に「?」のマークがあるファイルだと、「ファイル、フォルダ名に使えない文字があります。名前を変更して下さい」と出ます。かなり沢山ファイルがあるので一気にダウンロードしたいのですが、どうしたらよいでしょうか?ちなみに全て画像ファイルです。どなたかご教授お願いします。

  • ファイル名が日本語の物をダウンロードできるようにしたい。

    FTPでアップしたファイルをダウンロードしてもらうサイトを作ろうとしています。 ディレクトリで分けて、それぞれのディレクトリにファイル名が日本語の物を保存し、ダウンロードしてもらおうとしています。 ディレクトリでファイルを表示するというCGIは発見しました。 http://cgiscriptmarket.com/Xplorer/ しかし、ダウンロード出来るのは、英語のみです。 これをディレクトリ名・ファイル名ともに日本語にすることは出来ないでしょうか? 出来るだけシンプルに仕上げたいです。 CGIじゃなく、何かソフトを利用した方が良いでしょうか?(xoops等)

  • 日本語のファイル名を検索

    お世話になります。 このたび旧サーバから新サーバにファイル構成を移動したのですが、 どうやら、旧サーバの日本語名のファイルが新サーバに移したときに 文字化けしてしまっているようです。 文字化けの修正を目指して、旧サーバ内の日本語のファイル名をすべて 検索したいのですが、どのようにすればよいでしょうか? ご教授お願いいたします。

  • 日本語ファイル名の画像をサーバー移転したい

    現在、ヘテムルというサーバーを使って、CMSを使って会員制のサイトを運営しています。 会員さんがアップロードした日本語のファイル名の画像がたくさんあります。 また、大文字のファイル名の画像もたくさんあります。 近々、サーバの移転を考えています。 試しに現在のサイトをdreamweaverでダウンロードしてみたところ、 同じフォルダ内に大文字と小文字で同じ名前のファイル名が存在していて ダウンロードに失敗しました。 しかたないのでgoodsyncというソフトでサーバーからサーバーに直接、コピーしたところ 今度は日本語ファイル名の文字化けしてしまいコピーに失敗してしまいました。 そこで質問です。 ・サーバー間同期ができて日本語のファイル名が文字化けしないソフトがあれば教えてください ・もし、それがなければ上記のような状況でどうやったらサーバーを移転できるか教えてください

  • 日本語ファイル名(EUC)が付いたjpgファイルの表示時の問題

    日本語ファイル名(EUC)を付けたjpgファイルをWebブラウザで開くと、そのファイル名がタイトル表示されます。 大多数の方のWebブラウザの文字エンコードのデフォルトはShift_JISと思いますがjpgファイルなので文字エンコードの指定も出来ず、結果文字化けして表示されてしまいます。 もちろんこのとき、ブラウザの文字エンコードを日本語(EUC_JP)に指定すれば正常に表示されます。 例えば.htaccessの設定で解決したいのですが手段が見つかりませんでした。ご存知の方がおられましたらよろしくお願いします。

  • ファイル名を日本語にする

    ワードファイル名は日本語でもOKのようですが、 中には日本語ではだめで半角英数でなければだめなものもあると聞きます。 日本語でOKのものとそうでないものどちらが多いんでしょうか? lzh,exeなど様々な拡張子がありますが、 ファイル名を日本語にして良いかどうかは拡張し次第なのでしょうか? よろしくおねがいします。

  • 日本語名ファイルのダウンロードについて

    Windowsマシン上でブラウザを立上げ、LINUXサーバーにアクセスしてファイルをダウンロードしたいのですが、ファイル名が全角文字だと、NOTFOUNDになってしまいます。 ダウンロードを行なうjavascriptは以下のとおりです。 function download(){ document.location.href = "http://190.XXX.XXX.XXX:7001/temp/download/日本語名ファイル.txt" } システムは、javaで開発しています。(Servlet,JSP,Beans) サーバーのアプリケーションは、Weblogic6.0です。 ブラウザは、IE5.5です。 サーバーがWindowsマシンの場合は、上の方法で正常にダウンロードできます。 サーバーがLINUXマシンの場合、全角文字の部分をEUCに変換しておくと、ダウンロードはできるのですが、ダウンロード後のファイル名が化けてしまうので、具合が悪いです。 日本語名ファイルをダウンロードするよい方法がありましたら、教えてください。

  • FileZillaで日本語ファイル名は使えますか

    FileZillaで日本語ファイル名は使えますか セキュリティの観点から、FTPクライアントソフトをNextFTPからFileZillaに変えることを検討しています。 昔検討してみて、日本語ファイル名が使えないようだったのであまり検討もせずNextFTPを選択したような記憶があります。 調べてみたら、日本語フォルダ名は使えると紹介されているサイトがありました。 http://www.sky-s.net/sky-blog/archives/2010/07/16-190827.php この設定で、日本語ファイル名も見えるようになりますでしょうか。 試してみればいいのかも知れませんが、もしご存じの方、またはFileZillaで日本語ファイル名を使っている方がいらっしゃいましたら教えてください。 最終的には、FileZillaサーバーにFTPSでアクセスするのが目標です。 ご教示のほどよろしくお願いいたします。

  • 日本語ファイル名について

    最近MacからWinXPに移行しました。 Winのファイル名には、Macと違い拡張子を必ずつける、というのは知っていたのですが、日本語は使わない方が良いと最近聞きました。 確かに、普通に日本語名ファイルをメールでデータをやりとりしてて送れなかったりしました。が、送れる場合もあって実際?な状態です。 それ以外では特に不具合は経験してないのですが…。 サイトなどで検索してみたんですが、使っていいのか駄目なのかはっきりとは分かりませんでした。 また、駄目な場合、どのような不具合がおきるのでしょうか? どなたか教えてください。宜しくお願い致します。

  • 日本語名ファイルを書き込む

    こんばんわ。 早速、質問なんですが、 パソコンのデータのバックアップを取ろうと思い、DVD-Rを買ってきて、 フリーソフトのDeepBurnerで画像ファイルやテキストファイルなどを書き込みました。 アルファベット名ファイルはちゃんと書き込めるのですが、 日本語名ファイルの書き込みが上手くできません。 例えば、「テキスト.txt」を書き込むと、「テキ」というファイルになってしまい、 ファイル名が途切れてしまう、拡張子が消えてしまうという状態です。 日本語名ファイルは書き込めないものなのですか? それともソフトやDVDの問題なんでしょうか? 初歩的な質問で恐縮ですが、よろしくお願いします。