phpで取得したファイル名が文字化けする問題を解決するにはどうすればよいですか?
UTF8 でエンコードされた PHP のアップロード機能を開発していると、中国語のファイル名でファイルをアップロードすると、ファイル名が文字化けしてしまうという問題に遭遇する人も多いと思います。 iconv 関数を使用してファイル名を再エンコードすると、問題を解決できます。
php ファイルは UTF-8 エンコーディングを使用しています。推測が正しければ、APACHE は処理に GBK を使用するはずです。この問題について考えた後、関連するチュートリアルを検索し、iconv 関数を見つけました。
関数プロトタイプ: string iconv (string in_charset, string out_charset, string str)
使用例: $content = iconv("GBK", "UTF-8") , $content);
この例の機能は、$content を GBK から UTF-8 エンコーディングに変換することです。
コード文字化け問題のキーコード:
コードをコピー コードは次のとおりです:
$name=iconv("UTF-8","gb2312", $name);
アップロードされたファイルの中国語文字化けの問題を解決するだけでなく、ファイル名を変更することもできます。アップロードされたファイル。
例
次のようにコードをコピーします:
$sFileName = “sda.php”; $sOriginalFileName = $sFileName; $sExtension = s str($sFileName, (strrpos($sFileName, ‘.’) + 1));//找到扩展名 $sExtension = strtolower($sExtension); $sFileName = date(“YmdHis”).rand(100, 200).”.”.$sExtension; //这样就是我们的新文件名了,全数字的不会有乱码了哦。
以下にいくつかの追加があります:
php が文字化けした中国語ファイル名をアップロードする場合の解決策
次のようにコードをコピーします:
$filepath=”upload/”; $name=$filepath.$_FILES[“upfile”][“name”]; while(file_exists($name)){ $temp=explode(“.”,$name);//分割字符串 $name=$temp[0].”0″.”.”.$temp[1];//主文件名后面加0 }
次のようにコードをコピーします。
//iconv() 関数がキーです
if(move_uploaded_file($_FILES[“upfile”][“tmp_name”],iconv(“UTF-8″,”gb2312”,$name))){//处理…}
私の PHP エンコーディングは UTF-8 です理由としては、オペレーティング システムが GBK であるためです!
注: 私のサーバーは Windows XP、Apache であり、XP の文字セットは gbk であると推定されます。私のPHPコードはUTF-8形式で保存しているため、ファイル名を付けるときに文字化けしてしまうため、iconv()関数を使って元のUTF-8形式のファイル名をgbk形式に変換することができます。
php utf8エンコードで中国語ファイル名が文字化けする場合の解決策 ファイル名が文字化けしてしまうのですが、iconv関数を使用してファイル名を再エンコードすることで解決できます。
コードをコピーします。コードは次のとおりです。
header("Content-Type:text/html;charset=utf-8"); $submit = $_POST[‘submit‘]; if(isset($submit) && trim($submit) != ‘‘){ $file = $_FILES[‘file‘]; if(isset($file[‘tmp_name‘])){ $name = iconv(‘utf-8‘,‘gb2312‘,$file[‘name‘]); //利用Iconv函数对文件名进行重新编码 if(move_uploaded_file($file[‘tmp_name‘],$name)){ echo ‘文件上传成功!‘; echo ‘图片信息:‘; print_r($file); } } }
以上がPHPで取得したファイル名が文字化けする問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。