PHP アップロード ファイルの中国語ファイル名が文字化けする問題の解決策_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:25:30
オリジナル
805 人が閲覧しました

ファイルをアップロードするときに、元のテキスト名が問題にならない場合がありますが、中国語の場合は文字化けが発生する可能性があります。 phpアップロードファイルの名前が文字化けする原因と解決策を見てみましょう。

ここ数日 Windows に XAMPP をインストールし、PHP について学び始めるつもりです。ここ数日、php によるファイルのアップロードにさらされてきましたが、excel ファイルをアップロードしようとすると、ファイル名が中国語の名前の場合、エラーが報告されるというイライラする問題が発生しました。

その後、よく考えてみると、私が書いた 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);
move_uploaded_file($tmpname, $this->final_file_path) ;
$name =iconv("gb2312","UTF-8", $name);

アップロードされたファイルの漢字化けの問題を解決するだけでなく、アップロードされたファイルの名前を変更することもできます。

コードをコピーします コードは次のとおりです:

$sFileName = "sda.php";
$sOriginalFileName = $sFileName;
$sExtension = s str($sFileName, (strrpos($sFileName, '.') + 1));//拡張子を見つけます
$sExtension = strto lower($sExtension);
$sFileName = date("YmdHis").rand(100, 200).".".$sExtension; / /This is us 新しいファイル名はすべてデジタル名なので文字化けはありません。


ここにいくつかの追加があります:

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エンコードソリューション

UTF8 でエンコードされた PHP のアップロード機能を開発するときに、ファイル名が文字化けするという問題に遭遇する人は多いと思います。 iconv 関数を使用してファイル名を変更できます。問題を解決します。

コードをコピーします コードは次のとおりです:

header("Content-Type: text/html;charset=utf-8");
$submit = $_POST['送信'];
if(isset($submit) && トリム($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);
}
}
}
?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/825026.html技術記事ファイルをアップロードするときに、元のテキスト名は問題ありませんが、中国語の場合は文字化けする可能性があります。今日はそれをまとめます。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート