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参数,所有该字符后面的字符串都无法被保存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值