move_upload_file 因为文件字符集编码iconv引起的问题

对 包含中文的文件 进行操作时提示 Invalid argument?

包括: 这里的move_uploaded_file和 fopen等操作都是如此.

而且用了字符编码转换后, iconv('utf8', 'gb2312//ignore', $filename); 上传的文件名也没有乱码了!!1

程序开发的过程中总是能遇到各式各样的问题, 因为中文字符而出现错误的场景太多了. 比如用fopen()创建文件的时候就有可能提示 "...failed to open stream: Invalid argument in..." 这样的错误提示, 导致出现这个错误的主要原因就是  :::因为中文编码不一致造成的:::
解决的方法很简单, 用iconv()函数

比如:

    iconv("UTF-8","GB2312//IGNORE",$str) //把utf-8转为中文gb2312 "//IGNORE"表示屏蔽错误继续执行

测试一下错误提示取消, 上面的"//IGNORE" 去掉一般也不会出错. 

这里特别要注意的是: utf-8, 一定要用utf-8, 要加上中间的那个横杠, 不能写utf8! 那样会出错的!


iconv函数的一个bug::: iconv在转换字符"—"到gb2312时会出错
解决方法很简单,就是在需要转成的编码后加 "//IGNORE" 也就是iconv函数第二个参数后.如下:

iconv("UTF-8","GB2312//IGNORE",$data)

ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存

原文地址:https://www.cnblogs.com/bkylee/p/5372931.html