PHP - 如何处理文件名乱码

在中文windows环境下,PHP的文件系列函数(File System),譬如file_exists()、mkdir()等,如果路径或文件名中包含中文,则不能够正确识别,导致函数执行不成功。

这是因为在中文windows使用的是GBK编码,而PHP默认是UTF-8编码。

因此对于这个问题,需要将文件名称转换为GBK编码,譬如:

mkdir(iconv("UTF-8", "GBK", "中文"));

如果这类函数用的多,可以自行封装一下,以方便调用。

时间: 2024-10-24 16:55:57

PHP - 如何处理文件名乱码的相关文章

swfupload组件后台获取中文文件名乱码的问题解决

   问题描述:用swfupload上传文件,含有中文名称的文件上传会报错,我用的是获取FileItem对象,用FileItem对象的getName()方法获取文件名称会乱码,试着用request.setCharacterEncoding("UTF-8")及fileName= new String(fileName.getBytes("iso-8859-1";),"UTF-8"); 都不可以,用FileItem对象.getString("

centos6.3 tomcat上传文件名乱码

问题 如题,上传文件名问号 2. 定位 $locale LANG=en_US LC_CTYPE=zh_CN.UTF-8 3. 修复 所有用户生效,/etc/profile.d中加入setlang.sh: export LC_CTYPE=zh_CN.UTF-8 特定用户生效,~/.bash_profile中加入 export LC_CTYPE=zh_CN.UTF-8 centos6.3 tomcat上传文件名乱码,布布扣,bubuko.com

如何解决Mac里面解压后文件名乱码问题

如果你把Mac当成你的主要工作机器,而你的同事用的都是Windows,有时候交换文档就是一件很痛苦的事,比如今天要说到的问题:当同事传给你一个zip文件,结果你拿过来解压后发现里面有些文件的文件名如果带中文的话,你看到的将会是一堆乱码...Jay一直都无视这个问题,直到有一天终于忍不住了,去google了一把,终于找到了答案,这里分享一下. 其实解决方案很简单,下个软件装上吧!我们要装的软件是“The Unarchiver”.进入Mac App Store搜索 这里略去搜索和安装的过程 安装后第

Java文件下载文件名乱码

文件下载文件名乱码主要是没有对文件名进行编码,这里适用的浏览器主要包括(IE,火狐,谷歌,360) 代码如下 //火狐浏览器 if(ServletActionContext.getRequest().getHeader("USER-AGENT").toLowerCase().indexOf("firefox") >0){ return new String(文件名.getBytes(), Const.CHARSET_ISO8859_1); } //其他浏览器

通过freemarker出word的技术解决方案_通过点击一个按钮临时实现生成一个word,解决出word时中文文件名乱码问题,解决打开出word时打开的word出现问题的问题,出图片,解决动态列表

 通过freemarker制作word比较简单 步骤:制作word模板.制作方式是:将模板word保存成为xml----在xml的word模板中添加相应的标记----将xml的word文件的后缀名改成ftl文件 详细步骤如下: 模板制作(将要动态显示的数据打上标记,这个标记是freemarker中的EL标记,要注意的是,要控制值为空的情况,下面${(site.wzmc)?default("")}标识当网站名称为空的时候显示空值,如果这里如果不做控制,在实际项目中会显示错误!) 另外

struts使用html:file上传文件的时候文件名乱码解决

<body> <html:form action="/jwid/struts1x/15.3/form/upload.do?action=upload" enctype="multipart/form-data"> 文件:<html:file property="file" style="width:200px;"></html:file><br> 备注:<htm

Linux 下文件名乱码(无效的编码)的解决办法

文件是在WIndows 下创建的,Windows 的文件名中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码. sudo apt-get install convmv convmv 使用方法:convmv -f 源编码 -t 新编码 [选项] 文件名常用参数:-r 递归处理子文件夹–notest 真正进行操作,默认情况下是不对文件进行真实操作–list 显示所有支持的编码–unescap 可以做一下转义,比如把

Oracle数据文件名乱码问题

环境说明:Oracle11.2.0.3+OracleLinux+Vmware 12+SecureCrt 8.0.4 创建数据文件的时候输入法不小心变成中文字符,虽然删除相关字符后再创建数据文件,仍然出现数据文件名乱码情况: 表空间offline,并在os层重命名数据文件,在数据库重命名时出现找不到文件情况,尽管文件名是从数据库中查询出来的 直接online表空间报错,在alert文件中看到相关报错,并获取到文件名 重命名成功: 总结: 1. 数据库进行create操作时,应先在文本中进行,再复制

上传文件时并顺便将文件压缩时出现文件名乱码以及文件内容乱码解决方案

1.文件名乱码 这是因为压缩文件的包(也就是类)的问题: import java.util.zip.ZipOutputStream; 这个引入的包对汉语乱码,对数字和字母没事: 解决: 应该引入此包: import org.apache.tools.zip.ZipOutputStream; import org.apache.tools.zip.ZipEntry;import java.nio.charset.Charset; 2.文件内容乱码: outputStream.putNextEntr