3

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

a = csvread( <Persian filename> );
4

1 回答 1

1

我怀疑这是通过命令行和编辑器将字符输入 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文本区域。

于 2013-08-09T05:06:14.463 回答