php如何创建utf-8格式的txt文本文件而不是ansi格式

今天做一个php的简单搜索功能,将用户输入的关键字写入txt文本文档,在本地测试,输入中文没有问题,但是传到服务器以后测试,发现输入的中文关键字变成了乱码,查看原因发现PHP生成文件的默认格式是ansi的,而网站的编码格式是utf-8的:

if($map[‘key’]!=”){
??? $fp=fopen(“keywords.txt”,”a”);
??? fputs($fp,” \r\n”.$map[‘key’].” ”.date(“Y-m-d H:i:s”));
??? fclose($fp);
?}

首先是对关键词是否为空进行一个判断,然后将所输入的关键字写入keywords.txt文本文件中。由于PHP生成的文本文档格式是ansi的,而网站本身是utf-8的,所以导致了输入的中文关键字乱码的问题。那么如何保持编码格式一致呢?我采用的是让PHP生成utf-8格式的文本文件,而不是ansi的文本文件。所以对代码进行了以下修改:

if($map[‘key’]!=”){
??? $fp=fopen(“keywords.txt”,”a”);
??? fputs($fp,”\xEF\xBB\xBF \r\n”.$map[‘key’].” ”.date(“Y-m-d H:i:s”));
??? fclose($fp);
?}

即在要写入的文字之前加入“\xEF\xBB\xBF”,这串字符不可缺少哦,否则,你PHP生成的txt文本文件依然是ANSI格式而非utf-8的!

如果你的网站的编码格式是GBK或者gb2312的,请先对中文进行一个编码的格式转换哦!可使用mb_convert_encoding( $str, $encoding1,$encoding2 ) 和string iconv ( string in_charset, string out_charset, string str ) 这两个函数。

如果之前生成是ansi格式,修改代码后写入utf-8格式的依然是乱码的话,可先手动创建一个utf-8的文本文件,然后将ansi里面的文本复制到utf-8格式的当中。之后删除ansi格式的上传utf-8格式的即可。

希望能够帮到你!

Copyright © All Rights Reserved · Proudly powered by WordPress 冀ICP备12019045号-1

css.php