开发者社区> 问答> 正文

PHP中文文件名入库时出错? 400 报错

PHP中文文件名入库时出错? 400 报错

程序扫描某目录下,文件扩展名为JPG的所有文件。其中,中文文件名入MYSQL库时报错,提示:Incorrect string value: '\xB8\xB4\xBC\xFE" 之类的,是什么原因造成的呢。

起初以为是BOM头引起的,但是经过程序检测,所有中文文件名的文件皆不含BOM,求各位大神指点

环境:PHP 5.3.1

        windows 2003

展开
收起
爱吃鱼的程序员 2020-06-02 16:58:34 575 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    字符集问题吧,统一uft8不是很好么######回复 @JayKong : 效率低可以转换10000次看个时间对比,bug可以google到######回复 @陈俊贤 : 愿闻其详。iconv为何会效率低且有BUG呢?######回复 @JayKong : 转换字符最好用mb_convert_encoding,iconv效率低还有bug######回复 @陈俊贤 : 非常谢谢仁兄,借用你的灵感,想到了解决办法,确实是字符集的问题。解决办法就一条代码,哈哈。$file = iconv(mb_detect_encoding($file), 'UTF-8', $file);######回复 @JayKong : 用mb_detect_encoding检测下是什么编码######数据库用的什么字符集啊?######谢谢仁兄的热情帮忙,问题已经解决,确实是字符集的问题,只要将中文文件转换编码即可,$file = iconv(mb_detect_encoding($file), 'UTF-8', $file);######那你看看php中的字符串是什么字符集?出现乱码一定是字符集出了错######回复 @JayKong : 也许字段不是utf8呢######UTF8######用下 mysql_real_escape_string试试呢######尝试过无解######

    肯定是字符集的问题。

    1、要么是数据库整体的字符集

    2、要么是字段的字符集

    3、要么是程序编码的字符集

    一步步排解

    ######文件系统的名称编码是GBK么? 比如xp系统
    ######回复 @Jason阿坚 : 数据库是UTF8,不转码当然会出错######是######发出程序或debug看看######set names utf8
    2020-06-02 16:58:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-深入浅出网络编程与swoole内核-吴镇宇 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载