我想读取名称为波斯语(波斯语)的 .csv 文件的内容。Matlab 似乎无法检测到此文件。我使用这行代码:
a = csvread( <Persian filename> );
我想读取名称为波斯语(波斯语)的 .csv 文件的内容。Matlab 似乎无法检测到此文件。我使用这行代码:
a = csvread( <Persian filename> );
我怀疑这是通过命令行和编辑器将字符输入 Matlab 字符串值的问题。Matlab GUI 是用 Java 实现的,因此它在内部使用 Unicode 字符串。Matlabchar
值是 16 位 Unicode。但是当您保存 M 文件时,它可能会以您在 Matlab 或您的语言环境中设置的字符编码输出。而且您在 Matlab GUI 中使用的字体可能不支持文件名中的字符,因此您可能会看到“?” 命令提示符处的符号或其他占位符,即使字符串值在内部是正确的。
NTFS 文件系统以 Unicode 格式存储其文件名,因此数据级别的字符编码不应该成为获取文件本身的问题。它只会影响文件内容的解释方式。
如果您只需要以交互方式执行此操作一次,则可以通过使用uigetfile
交互式选择文件来绕过字符串输入问题。
a = csvread( uigetfile() );
您也可以使用波斯命名文件所具有的简单“8.3”文件名来获取它。在 Windows 命令提示符下,使用dir /x
查看与长文件名对应的 8.3 短文件名。它们将是简单的 ASCII 字符,因此您可以毫无问题地将它们输入到 Matlab 命令窗口或编辑器中。例如,我创建了一个名为 的文件تاده.txt
,它的 8.3 名称为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();
( not f = system('dir')
) 拉入目录中的所有文件名,查看哪个是您想要的,然后将其传递给csvread
,因此所有字符都不必通过 GUI文本区域。