我想阅读其名称为波斯语(波斯语)的.csv文件的内容。 Matlab似乎无法检测到这个文件。我使用这行代码:
a = csvread( <Persian filename> );
答案 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文本区域。