`
muyu
  • 浏览: 223277 次
  • 性别: 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
分享到:
评论

相关推荐

    c++文件解码与编码

    在C++中,文件编码通常涉及字符集(如ASCII、UTF-8)和二进制数据的转换。 1. **字符编码**:C++标准库提供了`std::string`和`std::wstring`等字符串类,用于处理文本数据。例如,ASCII编码是最简单的字符编码,每...

    php大批量文件编码转换 v1.0

    文件编码是指文件中字符的二进制表示方式,常见的有ASCII、UTF-8、GBK等。不同的编码方式适用于不同的场景,例如UTF-8是全球通用的标准编码,支持多种语言,而GBK是中国大陆常用的一种编码,包含更多的中文字符。 ...

    哈夫曼编码器(支持文件的编码译码树形打印)

    7. **文件输入输出**:在C或C++中,使用`fopen`、`fclose`、`fread`、`fwrite`等函数进行文件的打开、关闭、读取和写入操作。对于二进制数据,还需要注意字节序的问题。 8. **调试与测试**:为了确保编码和解码的...

    用MATLAB做的基于霍夫曼编码的文件压缩

    在本文中,我们将深入探讨如何使用MATLAB实现基于霍夫曼编码的文件压缩技术。霍夫曼编码是一种无损数据压缩方法,它利用字符出现频率的不同来构建最优的前缀编码,从而达到压缩数据的目的。MATLAB作为一种强大的数值...

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

    - **文件编码检测**: - 使用`mb_check_encoding`来检测文件是否符合特定的编码标准。 #### 结论 通过上述示例代码,我们可以看到如何使用PHP来创建并写入UTF-8编码的文件。理解这些基本操作对于处理不同语言环境...

    基于PHP的大批量文件编码转换源码.zip

    在信息技术领域,文件编码是决定文本在不同系统间正确显示的关键因素。不同的操作系统、编程环境或浏览器可能支持不同的字符编码,如ASCII、GB2312、GBK、UTF-8等。这个源码可能是为了解决在多平台交互时由于编码不...

    实现哈夫曼树的编码与解码,有相应的用户界面,能读出文件,写入文件

    - **写入文件**:将编码后的字符序列使用`fwrite`写入文件,确保编码过程的可逆性。 - **显示在屏幕上**:读取的编码串可以使用`printf`或`cout`打印在屏幕上供用户查看。 4. **用户界面**:为了实现完整的用户...

    huffman编码/译码的实现

    6. **编码与译码过程**: - 在编码过程中,遍历Huffman树并为每个字符生成其对应的编码。 - 在译码过程中,则是逆向操作,根据二进制流找到对应的字符。 #### 四、具体实现流程 1. **初始化Huffman树**:通过`...

    用Huffman编码对文件进行压缩的C语言实现.pdf

    Huffman编码是一种广泛使用的数据...通过C语言提供的文件操作和内存管理功能,可以有效地完成从文件读取、数据统计、Huffman树构建、编码生成到压缩文件输出的整个流程,最终达到压缩文件,优化存储与传输效率的目的。

    算法初阶.rar fwrite

    此外,fwrite也可以应用于图像处理、音频编码等领域,用于保存和读取二进制数据格式的文件。 总之,对fwrite的深入理解和熟练运用是学习算法和编程的基础,它能帮助我们更好地理解和操控数据,实现各种复杂算法的...

    哈夫曼编码压缩解压缩程序(CPP写的)

    在代码中,使用`fread`读取文件内容,根据哈夫曼编码表转换字符,并用`fwrite`写入到压缩文件`.hub`中。 5. **解压缩文件**: 解压缩过程则需要逆向操作。首先读取压缩文件中的哈夫曼编码,通过哈夫曼树还原出原始...

    DSP CCS3.3 文件读写操作

    在数字信号处理(DSP)领域,常常需要对文件进行读写操作,这在...通过熟悉和掌握CCS 3.3中的文件I/O函数和可能的DSP库函数,开发者能够有效地实现日志记录、数据存储与加载等功能,从而提升项目的稳定性和可维护性。

    C语言huffman编码实现常见文件压缩算法

    综上所述,实现C语言的哈夫曼编码文件压缩算法涉及到字符频率统计、哈夫曼树构建、编码与解码、树信息存储和读取等多个步骤。每个环节都需要深入理解和巧妙设计,以实现高效、可靠的压缩效果。通过Project-One-...

    浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题

    确保字符串与目标文件编码一致,避免乱码或换行问题。 针对上述问题,解决方案通常包括: 1. 确保文件以正确的文本模式打开。在本例中,使用了`"w+"`模式,这是一个文本模式,应该能正确处理`\r\n`。 2. 使用正确...

    Tiff文件编码格式

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

    哈夫曼编码/译码器数据结构课程设计

    - **文件读写操作:** 使用标准库函数如`fopen`, `fread`, `fwrite`等进行文件的打开、读取和写入。 - **位运算技巧:** 使用按位与(`&`), 按位或(`|`), 按位异或(`^`), 左移(`), 右移(`>>`)等操作来处理二进制数据...

    香农编码c语言

    在C语言中实现香农编码是一项常见的编程练习,它涉及到位操作、哈希表以及编码与解码的过程。以下是关于香农编码及其C语言实现的详细知识: 1. **香农编码的基本原理**: - 香农编码是基于字符出现频率的统计编码...

    C语言实现哈夫曼编码

    - 压缩过程涉及将原始文件内容转换为哈夫曼编码,再写入新的压缩文件,这需要`fwrite`和`fclose`等文件操作函数。 - 解压缩则相反,需要读取压缩文件,根据哈夫曼编码还原原始数据,并写入新的文件。 5. **程序...

    用哈夫曼编码C语言实现文件压缩-参考模板.pdf

    - 结构体`header[512]`用于存储ASCII字符及其相关信息,`yasuo()`函数中涉及文件操作,如`fopen()`,`fread()`和`fwrite()`。 通过这个实验,学生可以深入了解文件概念,学习线性链表和二叉树的算法,以及如何应用...

    C语言实现的基于Huffman哈夫曼编码的数据压缩与解压缩.7z

    4. **编码写入文件**:将生成的哈夫曼编码与对应的ASCII字符关联起来,形成编码表,并将其写入到压缩文件中。同时,还需要将原始文件按照哈夫曼编码重新编码,生成压缩后的二进制数据流。 5. **解压缩过程**:在解...

Global site tag (gtag.js) - Google Analytics