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,它的编码将变化一次。
分享到:
相关推荐
在C++中,文件编码通常涉及字符集(如ASCII、UTF-8)和二进制数据的转换。 1. **字符编码**:C++标准库提供了`std::string`和`std::wstring`等字符串类,用于处理文本数据。例如,ASCII编码是最简单的字符编码,每...
文件编码是指文件中字符的二进制表示方式,常见的有ASCII、UTF-8、GBK等。不同的编码方式适用于不同的场景,例如UTF-8是全球通用的标准编码,支持多种语言,而GBK是中国大陆常用的一种编码,包含更多的中文字符。 ...
7. **文件输入输出**:在C或C++中,使用`fopen`、`fclose`、`fread`、`fwrite`等函数进行文件的打开、关闭、读取和写入操作。对于二进制数据,还需要注意字节序的问题。 8. **调试与测试**:为了确保编码和解码的...
在本文中,我们将深入探讨如何使用MATLAB实现基于霍夫曼编码的文件压缩技术。霍夫曼编码是一种无损数据压缩方法,它利用字符出现频率的不同来构建最优的前缀编码,从而达到压缩数据的目的。MATLAB作为一种强大的数值...
- **文件编码检测**: - 使用`mb_check_encoding`来检测文件是否符合特定的编码标准。 #### 结论 通过上述示例代码,我们可以看到如何使用PHP来创建并写入UTF-8编码的文件。理解这些基本操作对于处理不同语言环境...
在信息技术领域,文件编码是决定文本在不同系统间正确显示的关键因素。不同的操作系统、编程环境或浏览器可能支持不同的字符编码,如ASCII、GB2312、GBK、UTF-8等。这个源码可能是为了解决在多平台交互时由于编码不...
- **写入文件**:将编码后的字符序列使用`fwrite`写入文件,确保编码过程的可逆性。 - **显示在屏幕上**:读取的编码串可以使用`printf`或`cout`打印在屏幕上供用户查看。 4. **用户界面**:为了实现完整的用户...
总之,`fread`和`fwrite`函数是C语言中处理文件二进制读写的关键工具,它们简化了大量数据的处理流程,避免了不必要的字符编码转换,极大地提升了数据处理的速度和性能。在实际编程中,合理运用这两个函数,可以显著...
6. **编码与译码过程**: - 在编码过程中,遍历Huffman树并为每个字符生成其对应的编码。 - 在译码过程中,则是逆向操作,根据二进制流找到对应的字符。 #### 四、具体实现流程 1. **初始化Huffman树**:通过`...
Huffman编码是一种广泛使用的数据...通过C语言提供的文件操作和内存管理功能,可以有效地完成从文件读取、数据统计、Huffman树构建、编码生成到压缩文件输出的整个流程,最终达到压缩文件,优化存储与传输效率的目的。
此外,fwrite也可以应用于图像处理、音频编码等领域,用于保存和读取二进制数据格式的文件。 总之,对fwrite的深入理解和熟练运用是学习算法和编程的基础,它能帮助我们更好地理解和操控数据,实现各种复杂算法的...
在代码中,使用`fread`读取文件内容,根据哈夫曼编码表转换字符,并用`fwrite`写入到压缩文件`.hub`中。 5. **解压缩文件**: 解压缩过程则需要逆向操作。首先读取压缩文件中的哈夫曼编码,通过哈夫曼树还原出原始...
在数字信号处理(DSP)领域,常常需要对文件进行读写操作,这在...通过熟悉和掌握CCS 3.3中的文件I/O函数和可能的DSP库函数,开发者能够有效地实现日志记录、数据存储与加载等功能,从而提升项目的稳定性和可维护性。
综上所述,实现C语言的哈夫曼编码文件压缩算法涉及到字符频率统计、哈夫曼树构建、编码与解码、树信息存储和读取等多个步骤。每个环节都需要深入理解和巧妙设计,以实现高效、可靠的压缩效果。通过Project-One-...
确保字符串与目标文件编码一致,避免乱码或换行问题。 针对上述问题,解决方案通常包括: 1. 确保文件以正确的文本模式打开。在本例中,使用了`"w+"`模式,这是一个文本模式,应该能正确处理`\r\n`。 2. 使用正确...
有了这个 就可以用最基本的fopen fwrite读写Tiff了。
- **文件读写操作:** 使用标准库函数如`fopen`, `fread`, `fwrite`等进行文件的打开、读取和写入。 - **位运算技巧:** 使用按位与(`&`), 按位或(`|`), 按位异或(`^`), 左移(`), 右移(`>>`)等操作来处理二进制数据...
在C语言中实现香农编码是一项常见的编程练习,它涉及到位操作、哈希表以及编码与解码的过程。以下是关于香农编码及其C语言实现的详细知识: 1. **香农编码的基本原理**: - 香农编码是基于字符出现频率的统计编码...
- 压缩过程涉及将原始文件内容转换为哈夫曼编码,再写入新的压缩文件,这需要`fwrite`和`fclose`等文件操作函数。 - 解压缩则相反,需要读取压缩文件,根据哈夫曼编码还原原始数据,并写入新的文件。 5. **程序...
- 结构体`header[512]`用于存储ASCII字符及其相关信息,`yasuo()`函数中涉及文件操作,如`fopen()`,`fread()`和`fwrite()`。 通过这个实验,学生可以深入了解文件概念,学习线性链表和二叉树的算法,以及如何应用...