欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

上传文件的中文乱码问题

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

回复讨论(解决方案)

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

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

csdn的开发人员又做多余的事了,帖子的分段又没了,唉……

说一个解决思路楼主试一试

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

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

然后再存