一般在php中会使用fopen进行生成文件,但是当文件名存在中文时保存文件会出现中文乱码。

源代码:

$fileName=__DIR__.'测试.txt';

$fp=fopen($fileName,'w');

fwrite($fp,'这是中文内容');

fclose($fp);

echo$fileName.'
';

if(file_exists($fileName)){

echo'hhhhh';

}

?>

结果:

c36445c8467165e54d093c150a4d7af7.jpg

文件名是乱码

解决:

对文件名进行编码。

$fileName=__DIR__.'测试.txt';

$fileName=iconv('UTF-8','GBK',$fileName);

$fp=fopen($fileName,'w');

fwrite($fp,'这是中文内容');

fclose($fp);

echo$fileName.'
';

if(file_exists($fileName)){

echo'hhhhh';

}

?>

结果:

b9b9fcf3949cbb6d19488a79cc82a7cf.jpg

文件名非乱码

但是看页面输出的文件名:

44d5ee19000d78f8952212aafadbcc67.jpg

输出的文件名为乱码

所以当要在页面上输出文件名又需要保存文件时,可以先保存原先的中文文件名,再通过文件名编码进行创建文件。

您可能感兴趣的文章:浅谈php中fopen不能创建中文文件名文件的问题php使用fopen函数创建、打开文件详解及实例代码PHP使用fopen与file_get_contents读取文件实例分享PHP中通过fopen()函数访问远程文件示例php使用fopen创建utf8编码文件的方法PHP获取远程网页内容的代码(fopen,curl已测)phpfile_put_contents()功能函数(集成了fopen、fwrite、fclose)

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐