php读取txt文件,mysql中insert插入记录失败的问题-k8凯发旗舰
这次操作:遍历目录下的txt文件,然后将文件名和内容分别保存到mysql表中title和content字段。
操作结果:读取txt文件正常,写入mysql时,部分记录插入完成,部分记录插入失效。
相关记录插入部分代码:
header("content-type:text/html;charset=utf-8");
$title = str_replace('.txt','',$title);
$str = file_get_contents($filepath, false, $context);
$content = mb_convert_encoding($str,'utf-8');
$content = addslashes($content);
$data=array();
$data['title']=$title;
$data['content']=$content;
$sql ="insert into my_post(title,content) values(:title,:content)";
$sth = $pdo->prepare($sql);
$sth ->execute($data);
检查数据,$data中title和content都正确获取到了,字符类型为string,编码为utf8也没问题,检查mysql表字段等编码方式都没问题。
但是,部分txt文本未能正确写入mysql,可能是文本编码方式出现了问题,检测结果都是正确的utf8编码,这就让人头疼了。
这个问题折腾了大爷一两天,老是找不到问题出处,狠不得把电脑都给砸了。
一直在想编码方式是不是混合了?
这些txt文件由html批量转化成txt文本,原来的html就是utf8编码格式,批量转txt文件的时候导致本来就是utf-8编码的文件又重新转码了一次。
这里的问题就是:utf-8编码再次转utf-8编码。
说了这么久,问题就是html页面转成txt文本时没有得到干净的utf-8编码txt文档,所以$content不能正确写入mysql。
问题是找到了,但是怎样解决这个问题呢?
先留在这里,想好了再补记一下吧。