Matlab中的波斯文件名或字符?

时间:2013-08-05 21:37:06

标签: matlab character-encoding

我想阅读其名称为波斯语(波斯语)的.csv文件的内容。 Matlab似乎无法检测到这个文件。我使用这行代码:

a = csvread( <Persian filename> );

1 个答案:

答案 0 :(得分:1)

我怀疑这是通过命令行和编辑器将字符输入到Matlab字符串值的问题。 Matlab GUI是用Java实现的,所以它在内部使用Unicode字符串。 Matlab char值是16位Unicode。但是当你保存M文件时,它可能会出现在你在Matlab或你的语言环境中设置的字符编码中。您在Matlab GUI中使用的字体可能不支持文件名中的字符,因此您可能会看到“?”即使字符串值在内部是正确的,也可以在命令提示符下使用符号或其他占位符。

NTFS文件系统以Unicode格式存储其文件名,因此数据级别的字符编码不应成为获取文件本身的问题。它只会影响文件内容的解释方式。

如果您只需要以交互方式执行此操作,则可以使用uigetfile以交互方式选择文件来绕过字符串输入问题。

a = csvread( uigetfile() );

您也可以使用波斯语命名文件所具有的简单“8.3”文件名来获取它。在Windows命令提示符下,使用dir /x查看与长文件名对应的简短8.3文件名。它们将是简单的ASCII字符,因此您可以在Matlab命令窗口或编辑器中输入它们。例如,我创建了一个名为تاده.txt的文件,其名称为6448~1.TXT

08/09/2013  01:10 AM    <DIR>                       .
08/09/2013  01:10 AM    <DIR>                       ..
08/09/2013  01:10 AM                 0 6448~1.TXT   ????.txt

作为程序化访问的测试,只需尝试使用f = dir(); f = system('dir'))拉入目录中的所有文件名,查看哪一个是哪一个你想要,然后将它传递给csvread,所以没有任何字符必须通过GUI文本区域。