本文目录一览:
- 1、C语言fwrite写入文件后为什么出现乱码?
- 2、为什么结构体里面的int型变量用fwrite写入文件时显示乱码?
- 3、PHP写入到文本文件乱码
- 4、PHP读取文件乱码问题
- 5、fwrite保存数据,打开变乱码
C语言fwrite写入文件后为什么出现乱码?
这个函数以二进制形式对文件进行操作。
按数据定义结构的写入保持数据结构的长度,对于数值类型,再用文本方式打开时表现为乱码。例如float a=12345.67,写入文件后为4个字节,打开后不是文本表示的8个字节。
写入数据用fprintf(fp,"%s %s %d 这种方式。不是 fscanf(), 另,注意写出时的格式里要有分隔符空格,否则下次读文件时shu,字符串,数字混在一起无法读。允许同时“读写”的文件,要注意读写位置的控制,必要时用到 回绕文件,或fseek。
扩展资料:
返回实际写入的数据项个数count。
说明:这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
fseek对此函数有作用,但是fwrite函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。
参考资料来源:百度百科-fwrite
为什么结构体里面的int型变量用fwrite写入文件时显示乱码?
乱码才是对的。
你用的是二进制形式打开的文件,int类型占用4字节,你的代码就是把这4字节写入了文件。
相当于就是说你的int比如是0x12345678,写入文件的内容会是 78 56 34 12 (注意,我说的是十六进制码),它不是可读的字符串。你需要的是将int转换为字符串再写入。
PHP写入到文本文件乱码
php处理中文编码老是有问题,这是编码的问题,可以将txt文件另存为UTF-8的编码再处理;
参考如下:
function file_utf8($filepath){
$f_contents= file_get_contents($filepath);
$encoding = mb_detect_encoding($f_contents, array('GB2312','GBK','UTF-16','UCS-2','UTF-8','BIG5','ASCII'));
$content_u="";
$handle=fopen($filepath,"r");
if ($handle){
while (!feof($handle)) {
$buffer= fgets($handle);
if ($encoding != false) {
if (mb_detect_encoding($buffer)!='UTF-8'){
$buffer = iconv($encoding, 'UTF-8', $buffer);
}
}else{
$buffer = mb_convert_encoding ( $buffer, 'UTF-8','Unicode');
}
$content_u.=$buffer;
}
fclose($handle);
return $info=array('status'=1,'message'=$content_u);
}else{
return $info=array('status'=0,'message'='打开文件失败');
}
}
PHP读取文件乱码问题
1.fgetc($fp) 取得是单字节的,中文可能的根据编码可能有2 3 4字节,所以不管怎么输出肯定都会是乱码。
解决方法
1.修改php文件的编码为utf-8, 只有这样保存到test.txt文件里的文件才会是utf-8 大部分中文就都是按照3个字节
2.$fp=fopen($filename,"r");
while(($char=fread($fp,3))!==''){
printf("%d.%s",ftell($fp)/3,$char);
}
fwrite保存数据,打开变乱码
你说的打开变乱码是什么意思?是指用文本方式打开“d:\\st.txt”这个文件吗?如果是这个问题那就对了,本来就该是乱码,因为fwrite在写入的时候是采用整字节的二进制写入,而文本编辑器采用的是asc码显示,两者不兼容。