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

  • 相关阅读:
    EF在二手市场中的使用
    二手商城集成jwt认证授权
    core3商城DDD实战(一)建模
    数组的逆序对
    C++实现线程安全的单例
    分配格充要条件的两种证明
    一个简单的日历系统(C++)
    HTTP基础--网页基础
    HTTP基础 --响应
    HTTP基础--请求
  • 原文地址:https://www.cnblogs.com/bkylee/p/5372931.html
Copyright © 2011-2022 走看看