`
muyu
  • 浏览: 218296 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

fwrite 与文件编码

    博客分类:
  • php
 
阅读更多

fwrite函数可以把字符串写入文件,文件最终的编码取决于要写入的字符串编码。如果字符串是utf-8,那么最终的文件就是utf-8编码;如果字符串是gb2312,那么最终的文件就是gb2312.

 

下面的示例代码,演示了重复打开、转换编码、保存同一个文件的过程,每执行一次操作,用记事本打开文件(a.txt),查看它的编码是否在utf-8和gb2312之间变换。

 

/**
 * 判断字符串是否为utf-8格式
 *
 * @param string $string
 * @return 0或1
 */
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] # excluding overlongs
    | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
    | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
    | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
    | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
    | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
    )*$%xs', $string);
}

/**
 * 读文件
 *
 * @param string $source
 * @return string / false
 */
function fileToStr($source) {
	if (file_exists($source)) {
	    $str = file_get_contents($source);
	    return $str;
	} else {
	    return false;
	}
}

/*----------诸函数----------*/
/**
 * 用字符串覆盖指定的文件
 *
 * @param string $destination
 * @param string $contents
 */
function saveFile($destination, $contents) {
	$tp = @fopen($destination, 'wb');
	fwrite($tp, $contents);
	fclose($tp);
}


//测试程序开始
$str = fileToStr('a.txt');
if(is_utf8($str)) {
  $str = iconv('utf-8', 'gb2312', $str);
} else {
  $str = iconv('gb2312', 'utf-8', $str);
}

echo is_utf8($str);
echo "\n";
saveFile('a.txt', $str); //每打开、再保存一次a.txt,它的编码将变化一次。

 

0
0
分享到:
评论

相关推荐

    PHP写入WRITE编码为UTF8的文件的实现代码

    <?...“test.txt”, “wb”)... 您可能感兴趣的文章:解析关于java,php以及html的所有文件编码与乱码的处理方法汇总PHP转换文件夹下所有文件编码的实现代码PHP编码规范之注释和文件结构说明php实现文件编码批量转换

    Tiff文件编码格式

    有了这个 就可以用最基本的fopen fwrite读写Tiff了。

    C语言程序设计题库 第十一章:数据文件的使用

    C语言中可以使用标准库函数(如fopen、fwrite、fread等)来读取和写入二进制文件。 在C语言中,使用文件指针(File Pointer)来表示文件,通过文件指针可以进行文件的打开、关闭、读取和写入等操作。文件操作包括...

    c语言文件操作的代码讲解

    c语言文件指针,fscanf,fprintf,fseek,fwrite,fread等用法详解

    C语言程序设计标准教程

     从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。  ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为: ASC码: ...

    linux_c API函数大全

    fwrite(将数据写至文件流) 96 10.17 97 getc(由文件中读取一个字符) 97 10.18 97 getchar(由标准输入设备内读进一字符) 97 10.19 98 gets(由标准输入设备内读进一字符串) 98 10.20 98 mktemp(产生唯一的...

    PHP fopen中文文件名乱码问题解决方案

    一般在php中会使用fopen进行生成文件,但是当文件名存在中文时保存文件会出现中文乱码。 源代码: <?php $fileName = __DIR__ . '\测试.txt'; $fp = fopen($fileName, 'w'); fwrite($fp, '这是中文内容'...

    php写入txt乱码的解决方法

    相信很多人在使用PHP的过程中都遇到过生成文件乱码的情况,不论是使用fwrite还是file_put_contents写入。可能你会先尝试从编码入手尝试解决,但最终的结果往往是不理想的,尽管我们都将其转换为了UTF-8编码了… 那么...

    PHP和MySQL Web开发第4版pdf以及源码

    2.5.1 fwrite()的参数 2.5.2 文件格式 2.6 关闭文件 2.7 读文件 2.7.1 以只读模式打开文件:fopen() 2.7.2 知道何时读完文件:feof() 2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv() 2.7.4 读取整个...

    PHP和MySQL Web开发第4版

    2.5.1 fwrite()的参数 2.5.2 文件格式 2.6 关闭文件 2.7 读文件 2.7.1 以只读模式打开文件:fopen() 2.7.2 知道何时读完文件:feof() 2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv() 2.7.4 读取整个...

    PHP和MySQL WEB开发(第4版)

    第19章 与文件系统和服务器的交互 19.1 文件上载 19.1.1 文件上载的HTML代码 19.1.2 编写处理文件的PHP 19.1.3 避免常见上载问题 19.2 使用目录函数 19.2.1 从目录读取 19.2.2 获得当前目录的信息 19.2.3 创建和删除...

    php 木马的分析(加密破解)

    分析可以知道,此木马经过了base64进行了编码,然后进行压缩。虽然做了相关的保密措施,可是php代码要执行,其最终要生成php源代码,所以写出如下php程序对其进行解码,解压缩,写入文件。解码解压缩代码如下:复制...

    loadrunner测试资料

    可以测试Read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read, pread ,mmap, aio_read, aio_write 等等不同的模式下的硬盘的性能。测试所有这些方面,生成excel文件,另外, ...

    PaperTest Q&A笔试综述

    7.文件读写 n1道面1面面主B1 23 1) fclose(……… 23 2)fopen 23 3fseek0 .24 4)fread 24 5) fwrite(… 24 8.硬链接与软链接 25 .C++与面向对象语言 26 1.C语言基础问题… 26 GoogLe+@...

    [php]mysql数据库操作——DB类

    // 数据库编码,GBK,UTF8,GB2312 private $result; // 执行query命令的结果数据集 private $errLog=true; // 是否开启错误日志,默认开启 private $showErr=true; // 显示所有错误,具有安全隐患,默认开启 ...

Global site tag (gtag.js) - Google Analytics