日期:2014-05-17  浏览次数:20479 次

上传文件的中文乱码问题
所有字符集都设置的是utf8,但上传文件后在文件目录下发现中文文件名乱码,然后就在上传前把文件名转为了GB2312码,这时候文件名可以显示中文了,但是数据库存放路径的时候不能插入了,我就把那张表改成了GB2312的字符集,按理说这样就可以了吧,还是插入不了?怎么办
文件上传 乱码

------解决方案--------------------
这里涉及两个概念,系统的编码和字符的编码
不知道你上传前是什么系统,如果是windows(98以后),选了"gb2312"编码实际上是cp936(相当于GBK)编码
而数据库的字符编码gb2312和gbk并不相同,汉字少很多,应该选gbk编码

还不行的话就要考虑其他因素了,如果服务器是windows,那是个麻烦事,因为php目前还不能有效处理windows下unicode路径——假设你的全路径有任意一个字符超出了字符集,windows是采用混合编码记录路径的;而*nix则是统一以utf-8编码记录路径,所以问题不大
------解决方案--------------------
说一个解决思路楼主试一试

还是全用UTF-8,上传后在PHP文件内再强制转换一次 上传后检测文件名是UTF-8还是GBK还是GB2312 然后统一转换为UTF-8

参考 http://www.cnblogs.com/rosenia/archive/2013/05/20/3088146.html 数组多加一个GB2312

然后再存