質問: phpでの”能”などの文字化け(ファイル送信フォーム) サーバー環境 win2000 apache/2.0.55 php version 4.4.1 mysql version 3.23.49 (sjis) php.iniの設定 magic_quotes_gpc=off mbstring.http_input=auto mbstring.http_output=sjis mbstring.internal_encoding=sjis にて運用しています。 携帯での利用を考慮して、sjisでの運用が必要であったため、euc-jpへの変更は考えていません。 能などの「文字化け文字」の表示は、addslashes,stripslashes等で処理しており問題はありません。 今回、ファイル送信のファイル送信での\の処理についてお聞きしたく質問しました。 過去の例にも挙げられていますが、可能性などの文字は、sjis環境で送信すると、可能\性と表示されます。表示は、stripslashesで\をとればいいと思いますが、上記のinput type=fileでファイルを指定すると c:\mydocument\可能性.doc は d:\mydocument\可能\性.doc となってしまい、パスと判断され フォームの送信後の $userfile_nameでは、「性.doc」となってしまいます。 現在のサーバー環境を変えることで大きな影響がでるのは、できるだけ避けたいです。 なにかよい意見がございましたら、ご教授ください。よろしくお願いします。
回答: ファイル名に\は使えないことになっているのでしょうがないですね。 php3はファイル名がフルパスで取得できたと思うのでphp3にして自分で工夫するか(\の前の文字が0x80以上だったらその前の\までをファイル名に追加というのを繰り返す) または携帯でアップロード可能な機種は限られているのでそこだけeucにしてしまう(自信ないですがアップロード可能な携帯はeucが使えたような)