问题描述
使用以下指令读取rtf文件:
cin = textread(filename,'%s','delimiter','\n');
(cin)是一个Nx1单元,其中N是文件的行数, 所以我可以编辑一些特定的行。
function dum= cell2rtf(cin,filename)
[row,col]= size(cin);
fout= fopen(filename,'w');
for ii=1:row
if(ii<row)
fprintf(fout,'%s\r\n',cin{ii});
else
fprintf(fout,cin{ii});
end
end
fclose(fout);
奇怪的行为是这样的:
如果cin{x}
行是包含内容的字符串
'19°\cell 19°\cell \cell \cell \cell 70°'
'19°\cell 19°\cell \cell \cell \cell 70°'
我不明白为什么字符'°'
每次都会变成'°'
而且我想知道如何解决这个问题。
解决方法
问题是EXPLAIN SELECT * FROM LatestDate;
适用于纯文本文件,而RTF文件不是纯文本文件:它们是包含标记和格式代码的二进制形式的文件,有点像Word textread()
文件。 .doc
可能会遇到这些格式/结构代码,并将它们误解为纯文本字符,而这就是诸如textread()
之类的垃圾字符的来源。
您能将RTF文件另存为纯文本文件并从中读取吗?
否则,您将需要编写RTF解析器或找到一个RTF解析库并使用它。 Matlab可以很轻松地与Java库配合使用,因此您可以使用Apache Tika库的RTFParser或RTFParserKit。