Home  >  Article  >  Backend Development  >  关于文件复制,文件名乱码的有关问题

关于文件复制,文件名乱码的有关问题

WBOY
WBOYOriginal
2016-06-13 11:55:371073browse

关于文件复制,文件名乱码的问题
我上传文件,把文件路径保存在数据库中,如    /Public/Uploads/bbbbpppp.doc

数据库整理为utf-8 bin      

然后我要把这个文件作为模板,复制到另一个文件夹下并重命名,用来重新编辑。

命名为英文文件名是没有问题的,我一旦保存为中文的 就成了 --------  鍟﹀暒鍟︾湅鐪

但是又要求为中文,我试过上传文件乱码解决方法的 iconv 方法,没有作用,变成其他乱码了(上传的中文文件名是没有问题的)
$root=$_SERVER['DOCUMENT_ROOT'];
$file = $root.$checklist[0]['description'];//$checklist[0]['description']是数据库路径,读取到页面没问题
$newfile = $root.'documents/''.'报告.doc';
copy($file, $newfile)






------解决方案--------------------
鍟﹀暒鍟︾湅鐪 是 utf-8 啦啦啦看眍 在 gbk 环境中看到的形式(还缺了一个字节)

简体中文 windows 操作系统的默认字符集是 gbk
简体中文 linux 操作系统的默认字符集是 utf-8
既然你的程序涉及到 文件复制,那么被处理的文件名编码就得符合操作系统的默认字符集,不然就是“乱码”了

你说 数据库整理为utf-8 bin,显然是不对的
utf-8 在 mysql 中表述为 utf8,而 bin(二进制)是不会做自动转码的

请先理顺关系后再寻求帮助
------解决方案--------------------
数据库编码 utf-8  php编码utf-8  然后再php里 用iconv将上传文件名 转换成gbk  上传后显示为中文没有错误

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:[]zend studio如何调试Next article:nginx调整php