php使用fopen创建utf8编码文件的方法

本文实例讲述了php使用fopen创建utf8编码文件的方法。分享给大家供大家参考。具体实现方法如下:

一般来说,如果我们直接使用fopen创建会发现文件编码都不是uft-8的了,那么如果要创建uft8文件我们需要进行一些技术处理。具体步骤如下:

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

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

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

代码如下:

<?php
$filename=rand(100,999).".txt";//定义好要创建的文件名称和文件格式(按需要自己改)
$str = "PHP学习网[www.jb51.net]";//待写入新建文件中的内容
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标签内部包含了这一句代码<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,代码中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);
?>

希望本文所述对大家的PHP程序设计有所帮助。

(0)

相关推荐

  • 简单谈谈php中的unicode和utf8编码

    重新认识unicode和utf8编码 直到今天,准确的说是刚才,我才知道UTF-8编码和Unicode编码是不一样的,是有区别的囧 他们之间是有一定的联系的,看看他们的区别: UTF-8的长度是不一定的,有可能是1.2.3字节 Unicode长度一定,2个字节(USC-2) UTF-8可以和Unicode互相转换 unicode和utf8的关系 Unicode(16进制) UTF-8(二进制) 0000 - 007F 0xxxxxxx 0080 - 07FF 110xxxxx 10xxxxxx

  • PHP UTF8编码内的繁简转换类

    曾找过一个JS版的,但是到了UTF8编码里不能用,于是就产生了自已写一个的念头.其实我这个代码的实现原理很简单的,只是一个替换字符集的过程,相信大部份人都可以写得出来.以下是代码,不知道有没有bug,大家如果在使用上有问题,可以提出来 复制代码 代码如下: <?php //<meta charset=utf-8"> class utf8_chinese { private $utf8_gb2312; private $utf8_big5; public function __c

  • UTF8编码内的繁简转换的PHP类

    曾找过一个JS版的,但是到了UTF8编码里不能用,于是就产生了自已写一个的念头.其实我这个代码的实现原理很简单的,只是一个替换字符集的过程,相信大部份人都可以写得出来.以下是代码,不知道有没有bug,大家如果在使用上有问题,可以提出来 复制代码 代码如下: <?php //<meta charset=utf-8"> class utf8_chinese { private $utf8_gb2312; private $utf8_big5; public function __c

  • PHP和Mysql中转UTF8编码问题汇总

    一个网站如果需要国际化,就需要将编码从GB2312转成UTF-8,其中有很多的问题需要注意,如果没有转换彻底,将会有很多的编码问题出现! PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码问题 点击编辑器的菜单:"文件"->"另存为",可以看到当前文件的编码,确保文件编码为:UTF-8,如果是ANSI,需要将编码改成

  • php下检测字符串是否是utf8编码的代码

    function is_utf8($string) {      return preg_match('%^(?:              [\x09\x0A\x0D\x20-\x7E]                 # ASCII          | [\xC2-\xDF][\x80-\xBF]                 # non-overlong 2-byte          |     \xE0[\xA0-\xBF][\x80-\xBF]             # exc

  • PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码

    老声长谈,着是困惑很多人的问题,如果处理不好,都是乱码,说这些话并不是我对编码很精通,只是在这方面是得留神,自己总结了一点小经验(容易出现乱码的地方有php文件里面 ,数据库里面 存储 的编码 ,页面显示 ,数据传输 ): 1.在建数据库的时候,尤其是用phpMyAdmin与MYSQL打交道时候,一般都是utf-8,字段为 utf8_general_ci 数据库的设置: 在my.ini文件中查找:[mysql]default-character-set = utf8[mysqld]default

  • PHP 截取字符串 分别适合GB2312和UTF8编码情况

    1. 截取GB2312中文字符串  复制代码 代码如下: <?php //截取中文字符串 function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; }

  • PHP汉字转换拼音的函数代码

    本文实例为大家分享了PHP汉字转换拼音的函数代码,供大家参考,具体实现内容如下 <?php /************ *汉字转换拼音Class *************/ class pin{ function Pinyin($_String, $_Code='gb2312'){ $_DataKey = "a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|

  • PHP与MYSQL中UTF8编码的中文排序实例

    本文实例讲述了PHP与MYSQL中UTF8编码的中文排序方法,分享给大家供大家参考.具体实现方法如下: 一般来说,中文共有三种排序方式: 1.根据拼音排序: 2.根据笔画排序: 3.根据偏旁排序. 系统的默认排序方式为拼音排序了,这个也是我们常用的,下面介绍的就是按拼音排序了 1. 需要在php数组中用中文排序,但是一般使用utf8格式的文件,直接用asort排序不行.用gbk和gb2312可以.这跟几种格式的编码有关系.gbk和gb2312本身的编码就是用拼音排序的. 复制代码 代码如下: f

  • php自定义函数实现汉字转换utf8编码的方法

    本文实例讲述了php自定义函数实现汉字转换utf8编码的方法.分享给大家供大家参考,具体如下: 该函数有两部分组成: function htou($c) { $n = (ord($c[0]) & 0x1f) << 12; $n += (ord($c[1]) & 0x3f) << 6; $n += ord($c[2]) & 0x3f; return $n; } //在代码中隐藏utf8格式的字符串 function utf8_unicode($str) { $

  • PHP检测字符串是否为UTF8编码的常用方法

    本文实例总结了PHP检测字符串是否为UTF8编码的常用方法.分享给大家供大家参考.具体实现方法如下: 检测字符串编码可以有很多种方法,如利用ord获得字符的进制然后进入判断,或利用mb_detect_encoding函数来处理,下面整理了四种常用方法供大家参考. 例子1 复制代码 代码如下: /** * 检测字符串是否为UTF8编码 * @param string $str 被检测的字符串 * @return boolean */ function is_utf8($str){ $len = s

随机推荐