2017-04-11 91 views
2

這是使用Matlab分析一些文本文件時出現的一個問題,這些文本文件被搞砸了。我正在使用R2017a(9.2.0.538062)64位(maci64)。請注意重音字符。Matlab錯讀ascii文本文件

其他文本編輯器正在閱讀的文件( 「戰爭與Peace.txt」)正確(TextMate是Emacs的,文字編輯和GNU八度),以及其他程序(Python和Ruby,數學)。

它是在1805年7月,演講者是着名的安娜·帕夫洛夫娜·施萊爾,女皇瑪麗亞·弗多羅夫娜的榮譽和最愛。

而在Matlab

這是在1805年7月,和說話的是著名的安娜PávlovnaSCHA©RER,榮譽和皇后MáryaFA«dorovna的最愛女僕。

我的問題

有一個Matlab(偏好?)設置,將準確讀取ASCII文本? Matlab似乎是有效的Ascii字符(主要在200-256範圍內)。

+2

也許[MATLAB:如何顯示從文件中讀取UTF-8編碼的文本? ](http://stackoverflow.com/q/6863147/5358968) – Steve

+0

我不認爲這些是完全ASCII字符。看起來你只是得到一個大寫字符(A),後面跟着一個垃圾字符。也許只有一個帶有重音符號的大寫字母版本,你只是得到第一個。 –

回答

0

我試圖從文本文件中讀取字符串時,實際上遇到了與您相同的問題。我的問題是我將.txt文件保存爲ANSI編碼格式。經過多次試驗,我想出了一個解決方案。首先您必須以UTF-8編碼格式保存文件。就像這樣:

test

然後在你的MATLAB代碼,你應該指定fopencommandencondigIn

測試代碼可以是這樣的:

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. 
+1

謝謝你,奧薩馬。您的解決方案完美運作祝你好運 - 我希望自己年輕時學過工程學。最好,戴夫 – user3161399

+0

@ user3161399很高興我幫了忙。 Bingo :) – Tes3awy

+0

考慮接受@ user3161399的答案 – Tes3awy