PHP中文文件名入库时出错? 400 报错
程序扫描某目录下,文件扩展名为JPG的所有文件。其中,中文文件名入MYSQL库时报错,提示:Incorrect string value: '\xB8\xB4\xBC\xFE" 之类的,是什么原因造成的呢。
起初以为是BOM头引起的,但是经过程序检测,所有中文文件名的文件皆不含BOM,求各位大神指点
环境:PHP 5.3.1
windows 2003
字符集问题吧,统一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系统版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。