Matlab误读ascii文本文件

时间:2017-04-11 23:46:56

标签: matlab text analysis

这是使用Matlab分析一些文本文件时出现的问题,这会搞砸一些文本。我正在使用R2017a(9.2.0.538062)64位(maci64)。请注意重音字符。

其他文本编辑正在正确阅读文件(“War and Peace.txt”)(Textmate,Emacs,Textedit和GNU Octave),以及其他程序(Python,Ruby,Mathematica)。

那是在1805年7月,演讲者是着名的女仆MáryaFëdorovna的女仆AnnaPávlovnaSchérer。

而在Matlab中

那是在1805年7月,演讲者是着名的AnnaPÃvlovnaSchérr,伴娘和女皇MáryaFÓdorovna的最爱。

我的问题

是否有准确读取Ascii文本的Matlab(首选项?)设置? Matlab似乎是有效的Ascii字符(大多数在200-256范围内)。

1 个答案:

答案 0 :(得分:0)

当我尝试从文本文件中读取字符串时,我实际上遇到了与您相同的问题。我的问题是我以.txt编码格式保存了ANSI文件。经过多次试验,我想出了一个解决方案。首先,您必须以UTF-8编码格式保存文件。像这样:

test

然后在您的MATLAB代码中,您应在encondigIn command中指定fopen

测试代码可以是:

close all;clearvars;clc;

fileID = fopen('text.txt', 'r', 'n', 'UTF-8');
C = textscan(fileID, '%s');
fclose(fileID);

celldisp(C) 

此代码的输出为:

C{1}{1} =

It


C{1}{2} =

was


C{1}{3} =

in


C{1}{4} =

July,


C{1}{5} =

1805,


C{1}{6} =

and


C{1}{7} =

the


C{1}{8} =

speaker


C{1}{9} =

was


C{1}{10} =

the


C{1}{11} =

well-known


C{1}{12} =

Anna


C{1}{13} =

Pávlovna


C{1}{14} =

Schérer,


C{1}{15} =

maid


C{1}{16} =

of


C{1}{17} =

honor


C{1}{18} =

and


C{1}{19} =

favorite


C{1}{20} =

of


C{1}{21} =

the


C{1}{22} =

Empress


C{1}{23} =

Márya


C{1}{24} =

Fëdorovna.