zoukankan      html  css  js  c++  java
  • 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参数,所有该字符后面的字符串都无法被保存

  • 相关阅读:
    设备驱动开发之缓冲区读写操作
    什么是80Plus
    INF Manufacturer Section
    C++编程获得某台机器的IP地址
    INF DestinationDirs Section
    importlib模块
    django的内置信号
    auth模块(登录验证)
    头像文件的预览
    powerDesiger 常用设置
  • 原文地址:https://www.cnblogs.com/bkylee/p/5372931.html
Copyright © 2011-2022 走看看