【问题标题】:My troubles creating MatLab table encoded in UTF-8创建 UTF-8 编码的 MatLab 表时遇到的麻烦
【发布时间】:2015-05-14 19:36:04
【问题描述】:

我知道 MatLab 不应该是理想的,但我希望对我的类似表格的 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') 之后,它给了我一个彻底的错误Invalid parameter name: FileEncoding。我很困惑。

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

【问题讨论】:

    标签: matlab utf-8


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-02
        • 1970-01-01
        • 2023-02-11
        • 1970-01-01
        • 2021-03-24
        • 1970-01-01
        • 2022-01-03
        相关资源
        最近更新 更多