[请益] 汇入CSV问题 (以解决)

楼主: CheLiu (劉徹)   2015-04-21 10:47:19
这几天遇到了一个怪怪的问题
问题叙述如下
1、有两台机器 本机及正式系统机器
2、原本可以顺利上传汇入资料 不会乱码
印象中没有改到相关上传的code却突然变成
上传之后会乱码
3、之后本机再测试可以正常上传不会乱码后
就整个网页再覆蓋到系统机器却依然乱码
怀疑是数据库有设定改变?但却又找不到
有跟本机比对过 都一样
不晓得还有可能是哪边有问题呢?谢谢
补充: 有把系统机器的数据库备份转移到本机
再次测试依然可以正确上传无乱码
所以有可能是机器本身哪边设定吗?
更新问题:
经过大家的提示或教导后有发现一个不同点
就是
1.在本机读取档案内容echo 出来是乱码,编码确定是UTF8
但是可以正确写入数据库
2.在SERVER端读取同一份档案echo出来
编码测试也确定是UTF8
但是ECHO出来 却会变成空白 或是不同字符 总之就是跟本机echo出来的
完全不一样,当然也还是无法些写入数据库
问题解决&结论
首先感谢rockmanalpha版友花时间协助及帮忙,不然我应该很难找出问题
这个问题经过一些测试rockmanalpha发现可能是
5.2好像有一个BUG 会将分隔后的资料中第一个高位字符拿掉
所以会造成中文有乱码,但却又不是每个系统都会发生
或是fgetcsv 有什么隐藏参数 这部分小弟会找时间再测试看看
最后解决方式是在CSV档案里面的每个字段都加上双引号
ex: "姓名","生日"
就这样我手上两个系统都没有做任何设定更动或程式码变动
问题就解决了
感谢rockmanalpha及众位板友,也回馈给大家这个问题 谢谢大家
※ 编辑: CheLiu (122.147.100.151), 04/21/2015 11:03:25
作者: hareion08 (巨蟹)   2015-04-21 11:12:00
在数据库连接加上"set names utf8" or 读取CSV字串加上iconv()强制转换编码 or 你数据库编码不正确
楼主: CheLiu (劉徹)   2015-04-21 11:30:00
set names那个有加 而且有把原本不行的数据库备份到本机进行测试 结果又是可以
作者: rockmanalpha (KIN)   2015-04-21 12:02:00
Live Server DB的Collation是不是utf8?还有你的CSV档有没有BOM?还有你可以试着在正式机器上将资料写入DB前 先输出看看这时的UTF8是不是乱码 是乱码就排除掉DB出问题的可能性
楼主: CheLiu (劉徹)   2015-04-21 12:25:00
先输出就已经是乱码了 所以看起来不是数据库问题BOM的话应该也没问题 同一份档案本机可以 也有试过用记事本去除BOM 结果也是一样
作者: rockmanalpha (KIN)   2015-04-21 13:42:00
想确认下上传的档案编码是不是UTF8? 另外输出的PHP页面也要加UTF8的header 开网页看是否还是乱码
作者: sunnyvisit (visit)   2015-04-21 14:12:00
可能本来utf8正常但其他编码就会有问题?
楼主: CheLiu (劉徹)   2015-04-21 14:38:00
上传和输出的页面编码都是utf8
作者: rockmanalpha (KIN)   2015-04-23 14:24:00
如果你本地跟正式Server一个是Windows一个是Linux的话 我怀疑是语系问题 试试看在程式开头加上这句setlocale(LC_ALL,'zh_TW.UTF-8') 或者是zh_TW总之是正式机器系统中的语系代号 测试看看我想就是fgetcsv本身的问题了 网上也有人重写了这个function 不过最简单方法就是用5.2以上的PHP版本就应该没这个问题了

Links booklink

Contact Us: admin [ a t ] ucptt.com