我创建以UTF-8

时间:2015-05-13 09:23:26

标签: matlab utf-8

我知道MatLab不应该是理想的,但我希望用类似于table的data.dat文件做一些最小的工作,如下所示:

ID,Name,Surname,Y,M,D,Num,Loc
1672399390,A,DULKINAS,1993,01,31,3019,Šiauliai
4157844163,D,SKARBALIUS,1993,12,08,3019,Tauragė
5541091033,E,LUKOŠEVIČIUS,1992,10,25,3019,Panevėžys
2005609387,M,DUBINSKAS,1991,03,31,3019,Kaunas
2716651285,P,ŽIEDELIS,1992,02,28,3019,Vilnius

由于数据格式整齐,并用逗号分隔,我决定只使用readtable('data.dat')并从那里开始工作。

问题1. MatLab没有告诉故障线路在哪里。由于有几个冗余逗号,它只是抛出错误文本文件的每一行必须具有相同数量的分隔符。我通过使用其他工具计算每行中的逗号并在之后手动纠正它来解决这个问题。

问题2.由于某种原因,它将第一个变量ID(即AFAIK是一个有效的非保留变量名称)重命名为x__ID 并发出警告修改变量名称以使其成为有效的MATLAB标识符。我并不真正关心这个,但这很奇怪。

问题3.好的UTF-8符号没有正确显示。此外,在使用documentation并运行readtable('data.dat','FileEncoding','UTF-8')后,我发现运气错误参数名称无效:FileEncoding 。我很困惑。

我该如何应对这种情况?

2 个答案:

答案 0 :(得分:2)

这可能是因为您使用的是比R2014b更旧的matlab版本。 FileEncoding选项was added in R2014b。如果您通过doc readtable检查安装中的文档,则可能会发现它丢失了。

重命名ID的原因是它在您的unicode文档的开头解释Byte Order Mark作为名称的一部分

答案 1 :(得分:1)

此外,为了解决问题1 - 现在在R2015a的错误消息中标记了带有额外逗号的行。我在第4行的数据文件中添加了一个额外的逗号,结果如下:

>> readtable('data.dat', 'FileEncoding', 'UTF-8')
Error using readtable (line 129)
Reading failed at line 4. All lines of a text file must have the same number of delimiters. 
Line 4 has 8 delimiters, while preceding lines have 7.