读书人

文件读取:读出来了一些乱码。该如何解

发布时间: 2013-10-18 20:53:13 作者: rapoo

文件读取:读出来了一些乱码。


[解决办法]
直接改文件的后缀名?

引用:
Quote: 引用:

rtf文件本身就包含许多格式信息,比如字体颜色表格什么的,不是纯文本文件,直接读有乱码很正常。

Quote: 引用:


#include <stdio.h>

int main(int argc, const char * argv[])
{
FILE *fp;
int ch;
fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");

while ((ch=getc(fp)) != EOF)


{
putchar(ch);

}



return 0;
}



文件内容:lichgan isdadafadad

读出来的内容:
{\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural

\f0\fs24 \cf0 lichgan isdadafadad}

请问这是怎么回事呢?


引用:
rtf文件本身就包含许多格式信息,比如字体颜色表格什么的,不是纯文本文件,直接读有乱码很正常。

Quote: 引用:


#include <stdio.h>

int main(int argc, const char * argv[])
{
FILE *fp;
int ch;
fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");

while ((ch=getc(fp)) != EOF)
{
putchar(ch);

}



return 0;
}



文件内容:lichgan isdadafadad

读出来的内容:
{\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural

\f0\fs24 \cf0 lichgan isdadafadad}

请问这是怎么回事呢?


我其实已经把rtf文件格式改成了text格式,但是还是带出来一样的内容,这事怎么回事呢

[解决办法]
纯文本文件是不可能的。

引用:
Quote: 引用:

rtf文件本身就包含许多格式信息,比如字体颜色表格什么的,不是纯文本文件,直接读有乱码很正常。

Quote: 引用:


#include <stdio.h>

int main(int argc, const char * argv[])
{
FILE *fp;
int ch;
fp = fopen("/Users/lichan/Desktop/name.rtf", "rb");

while ((ch=getc(fp)) != EOF)
{
putchar(ch);

}



return 0;
}



文件内容:lichgan isdadafadad

读出来的内容:
{\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural

\f0\fs24 \cf0 lichgan isdadafadad}

请问这是怎么回事呢?


而且我是用文本编辑,已经去掉了那些格式修饰符,但是还是能读出来

[解决办法]
rtf的内容本来就是
{\rtf1\ansi\ansicpg936\cocoartf1187\cocoasubrtf370
...
这样的

可以将rtf用文本编辑器打开看。
[解决办法]
打开文件另存为“纯文本文件”。
[解决办法]
当然有啊
你还能截图?
[解决办法]
http://webdesign.about.com/od/textedit/a/aa122006.htm

Change the format to plain text
TextEdit defaults to a rich text format, so you need to switch it to plain text to write HTML
Open the Format tab
Choose "Make Plain Text"
You can also hit Shift-Apple-T to switch to plain text
[解决办法]
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……

------解决方案--------------------


用RichEdit控件读取,存储为文本格式即可。

读书人网 >C语言

热点推荐