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 = strtolower($sExtension);
$sFileName = date("YmdHis").rand(100, 200).".".$sExtension; //这样就是我们的新文件名了,全数字的不会有乱码了哦。

时间: 2024-11-27 22:19:35

php上传文件中文文件名乱码的相关文章

编码-Android httppost 上传文件 中文乱码

问题描述 Android httppost 上传文件 中文乱码 利用CustomMultipartEntity附加的内容: 按照网上的指示,为httppost设置编码,new FileBody时转码,统统不好使! 真心求助!! 核心代码如下: @Override protected String doInBackground(String... params) { String serverResponse = null; HttpClient httpClient = new DefaultH

WordPress上传文件中文乱码(自动重命名)

下面以wordpress 3.2.1为例,打开wp-admin/includes/file.php文件,找到第326行这段代码:  代码如下 复制代码 // Move the file to the uploads dir $new_file = $uploads['path'] . "/$filename"; if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) )         return $up

求正则表达式:上传文件的文件名格式

问题描述 通过UpLoad的控件上传,得到文件路径.例如E:xxxas$.txt需要一正则表达式来验证文件名as$.txt仅包含英文字母和数字,如何实现? 解决方案 解决方案二:stringstr=@"xxxass34.txt";stringstrReg=@".+\[^.][a-zA-Z0-9]+.txt$";Response.Write(Regex.Match(str,strReg,RegexOptions.IgnoreCase).Success);解决方案三:那

asp fckeditor自定义上传文件的文件名_应用技巧

只需要在fckeditor\editor\filemanager\connectors\asp文件夹下的commands.asp修改一下即可 在这个文件中查找一下:FileUpload 会找到这个函数 把 复制代码 代码如下: Dim sFilePath sFilePath = CombineLocalPaths(sServerDir, sFileName) 改为 复制代码 代码如下: Dim sFilePath,ranNum Randomize ranNum=int(90000*rnd)+10

asp fckeditor自定义上传文件的文件名

只需要在fckeditor\editor\filemanager\connectors\asp文件夹下的commands.asp修改一下即可 在这个文件中查找一下:FileUpload 会找到这个函数 把 复制代码 代码如下: Dim sFilePath sFilePath = CombineLocalPaths(sServerDir, sFileName) 改为 复制代码 代码如下: Dim sFilePath,ranNum Randomize ranNum=int(90000*rnd)+10

正确上传文件技巧_网站应用

 用户的角度上说,上传正确的文件应是自律为主.上传文件应该遵守两个原则,首先就是确定这个文件一定会使用到才会上传,其次就是是尽量的小.下面,我举例说明一下. 比如用户上传图片,jpg.gif 和 png 图片格式所能展现的效果和内容是不同的,但不建议采用上述格式以外的其他图片格式作为上传文件.这里,有一个连接详细解释这些内容. 个人 Blog 的照片如果需要插图,可以考虑使用如 Yupoo 等图片共享网站,当然前提是内容符合他们的要求.这样你本身就可以每个月就可以减轻一些存储空间,并且更有利于管

项目中需要多次上传文件,怎么实现比较好?

问题描述 一个表单内要上传多个文件,如:营业执照:上传,产品证书:上传,产品报告:上传,......上传后我要得到相应的文件地址并保存到数据库,还有比如营业执照只能上传一个文件而证书可以上传多个文件怎么控制呢?在asp中我只须调用我下面写的upload_box函数:''上传文件后将文件的相关信息存放入数据库file表中.''然后返回file表id给所设置的字段:input_name''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

绕过silverlight的安全限制的js和asp.net上传文件方法

绕过silverlight的安全限制的js和asp教程.net上传文件方法 1.silveright页面按钮调用承载页的js代码打开一个用于上传的aspx页面,文件的上传都是在这个页面中完成. 2.文件上传完成以后,上传页将上传的文件的文件名传回承载页,再由承载页传回silverlight,以完成其它的工作. 具体实现如下: 1.首先这个方法需要silverlight与承载页的js代码进行交互,所以必须完成以下的基础操作: 1 void FileUploader_Loaded(object se

java中使用Struts 2框架上传文件代码

HTML表单默认值:  代码如下 复制代码 <form action="" enctype="application/x-www-form-urlencoded" method="get"> ...</form> 要使用HTML表单上传文件,需要将HTML表单的enctype属性设置为"multipart/form-data",还需要将表单的method属性设置为"post"  代码