我在创建以 UTF-8 编码的 MatLab table 时遇到的麻烦

My troubles creating MatLab table encoded in UTF-8

我知道 MatLab 不应该是这个的理想选择,但我希望对我的 table-like 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(据我所知是一个有效的非保留变量名)重命名为 x__ID 并给出警告 修改了变量名以使其成为有效的 MATLAB 标识符。我不太关心这个,但它很奇怪。

问题3. 那么UTF-8符号显示不正确。此外,在 documentation 和 运行 readtable('data.dat','FileEncoding','UTF-8') 尝试了我的运气后,它给了我一个完全错误 无效参数名称:FileEncoding。我很困惑。

我应该如何处理这种情况?

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

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

此外,为了解决问题 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.