プロが教えるわが家の防犯対策術!

いつもお世話になります。
いろいろ調べましたが解決しませんでした。

今社内で、情報共有掲示板を作成しているのですが、
ファイルをアップロードすると、ファイル名がぐちゃぐちゃになっています。(英数字は問題ありません)

たとえば、自己申告0936.xls をアップロードすると、シォクハソスケ・936.xls となってしまいます。

PHPで作成し、サーバはApache2で、OSはWindows2000です。プログラムはEUC,MySQLはEUCの設定です。
ファイル名をデータベースにも登録するようにしていますが、そこでは文字化けは起こりません。

if($_FILES['file1']['name'] != ""){
mkdir("$uploaddir");
$ufile1 = $_FILES['file1']['name'];
$uploadfile = $uploaddir.$ufile1;
move_uploaded_file($_FILES['file1']['tmp_name'],$uploadfile);
}

一部ですが、最大10個ファイルを送れるようにしています。

どうかよろしくお願いいたします!!

A 回答 (3件)

$uploadfile = $uploaddir.$ufile1;


move_uploaded_file($_FILES['file1']['tmp_name'],$uploadfile);

以下に変更して下さい。

$uploadfile = $uploaddir.$ufile1;
move_uploaded_file($_FILES['file1']['tmp_name'], mb_convert_encoding($uploadfile, "SJIS", "EUC-JP"));

mb_convert_encoding()は、php.iniでマルチバイト関数を
有効にしておく必要があります。

変更する点は以下等を参考にして下さい。
http://aki.adam.ne.jp/scripts/question/write.php …
    • good
    • 0
この回答へのお礼

ありがとうございました!おっしゃるとおりにすると文字化けせずに解決できました。
本当にありがとうございます。

お礼日時:2005/10/21 12:29

多分ファイル名がSjisとかになっているのでは?


WINの内部文字コードはS-JISなので・・・
PHP内で受け取ったファイルネームをエンコードすればできると思います。(多分)

というか、ファイルをアップロードすると文字化けして、Mysql上では文字化けしない・・・?
というのはどういうことでしょうか?
アップロードしてMysqlで記録したときには文字化けしないで、読み出したときに文字化けしているということでしょうか?
    • good
    • 0

アップロードするフォームのHTMLの文字コードは何になってますか?


ちゃんとEUCになってますか?

現象的には文字コードの問題だと思うので、各箇所のコードを確認してみてだくさい。

この回答への補足

回答ありがとうございます。
ヘッダーは以下のようになっていますので、EUCで問題ないと思います。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html lang="ja">

<head>
<meta http-equiv="content-type" content="text/html;charset=euc-jp">
<title>XXXX -登録-</title>

補足日時:2005/10/21 06:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!