程序扫描某目录下,文件扩展名为JPG的所有文件。其中,中文文件名入MYSQL库时报错,提示:Incorrect string value: '\xB8\xB4\xBC\xFE" 之类的,是什么原因造成的呢。
起初以为是BOM头引起的,但是经过程序检测,所有中文文件名的文件皆不含BOM,求各位大神指点
环境:PHP 5.3.1
windows 2003
字符集问题吧,统一uft8不是很好么回复<aclass='referer'target='_blank'>@JayKong:效率低可以转换10000次看个时间对比,bug可以google到回复<aclass='referer'target='_blank'>@陈俊贤:愿闻其详。iconv为何会效率低且有BUG呢?回复<aclass='referer'target='_blank'>@JayKong:转换字符最好用mb_convert_encoding,iconv效率低还有bug回复<aclass='referer'target='_blank'>@陈俊贤:非常谢谢仁兄,借用你的灵感,想到了解决办法,确实是字符集的问题。解决办法就一条代码,哈哈。$file=iconv(mb_detect_encoding($file),'UTF-8',$file);回复<aclass='referer'target='_blank'>@JayKong:用mb_detect_encoding检测下是什么编码数据库用的什么字符集啊?谢谢仁兄的热情帮忙,问题已经解决,确实是字符集的问题,只要将中文文件转换编码即可,$file=iconv(mb_detect_encoding($file),'UTF-8',$file);那你看看php中的字符串是什么字符集?出现乱码一定是字符集出了错回复<aclass='referer'target='_blank'>@JayKong:也许字段不是utf8呢UTF8用下mysql_real_escape_string试试呢尝试过无解
肯定是字符集的问题。
1、要么是数据库整体的字符集
2、要么是字段的字符集
3、要么是程序编码的字符集
一步步排解
文件系统的名称编码是GBK么?比如xp系统版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。