Home >php教程 >php手册 >php fopen创建utf8编码文件例子

php fopen创建utf8编码文件例子

WBOY
WBOYOriginal
2016-06-02 09:13:51848browse

如果我们直接使用fopen创建会发现文件编码都不是uft-8的了,那么如果要创建uft8文件我们需要进行一些技术处理,下面我搜索了网络上一些通用方法,下面一起来看看吧.

使用PHP创建编码格式为utf-8文件的方法:

第一步:新建一个txt文件,打开,文件->另存为xxx.php,并将编码改为UTF-8,保存.

第二部:在php文件中加入如下代码:

<?php 
$filename=rand(100,999).".txt";//定义好要创建的文件名称和文件格式(按需要自己改) 
$str = "PHP知名网[www.phprm.com]";//待写入新建文件中的内容 
if (!$head=fopen($filename, "w+")) {//以读写的方式打开文件,将文件指针指向文件头并将文件大小截为零,如果文件不存在就自动创建 
    die("尝试打开文件[".$filename."]失败!请检查是否拥有足够的权限!创建过程终止!"); 
} 
if (fwrite($head,$str)==false) {//执行写入文件 
    fclose($head); 
    die("写入内容失败!请检查是否拥有足够的权限!写入过程终止!"); 
} 
echo "成功创建UTF-8格式文件[".$filename."],并向该文件中写入了内容:".$str; 
fclose($head);

使用这种方法创建UTF-8编码文件的关键点,保证PHP代码文件本身的编码格式为UTF-8,php代码文件的编码格式是什么则创建出来的文件编码也是什么.

显示出现乱码的问题,控制页面显示的因素主要有三个:

1.HTML代码控制:标准HTML网页文件中的head标签内部包含了这一句代码,代码中charset=utf-8这句就是告诉浏览器要以utf-8格式将网页中的内容显示出来。

2.PHP代码控制:如果在PHP文件的开头加上header("content-Type: text/html; charset=utf-8");这句代码,也是为了告诉浏览器要以utf-8格式将网页中的内容显示出来。(注:这句代码之前不能有类似echo的输出)

3.文件物理存储属性控制:用记事本打开一个文件,文件->另存为,你在“编码”中所看到的就是当前文件的真正的编码.

补充一个fopen例子,代码如下:

<?php 
$f=fopen("test.txt", "wb"); 
$text=utf8_encode("a!"); 
//先用函数utf8_encode将所需写入的数据变成UTF编码格式。 
$text="\xEF\xBB\xBF".$text; 
//"\xEF\xBB\xBF",这串字符不可缺少,生成的文件将成为UTF-8格式,否则依然是ANSI格式。 
fputs($f, $text); 
//写入。 
fclose($f);

 

      

这样创建出的文件编码格式确实是utf-8,但是放在文件中的汉字出现了乱码的现象,经过一番调试,代码如下:

<?php 
$ctxtsubmit="好呀"; 
$f=fopen("../".$file, "wb"); 
//$text=utf8_encode($ctxtsubmit); 
//先用函数utf8_encode将所需写入的数据变成UTF编码格式。 
$text="\xEF\xBB\xBF".$ctxtsubmit; 
 //"\xEF\xBB\xBF",这串字符不可缺少,生成的文件将成为UTF-8格式,否则依然是ANSI格式。 
fputs($f, $text); 
//写入。 
fclose($f);

至于"\xEF\xBB\xBF"为什么加这字符串,我也不明白.


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn