【发布时间】:2014-08-02 21:50:05
【问题描述】:
我正在使用这些代码从文本文件中读取"1.0.2" 之类的字符串:
reader = fopen('Address\My_Text.txt');
Out= textscan(reader,'%str');
Out1=Out{1} ;
Out2=Out1{1};
fclose(reader);
此代码 (Out2) 返回如下字符串:1.0.2。这是一个文本文件,由 MATLAB 从 HDD 中的其他位置复制并使用上述代码读取一次,用于与一些现有的文本文件进行比较,然后使用 movefile 替换此文件(主文件工作正常)。当我手动创建一个文本文件并在其中插入 "1.0.2" 时,这些代码会正确读取此值。问题是什么? MATLAB的解决方案是什么?
谢谢。
【问题讨论】:
-
@Jongware。谢谢你的评论。这些解决方案适用于 C# 和 VB.Net。我需要 MATLAB 的解决方案。
-
啊,但是你问出了什么问题。这是 BOM,由您的文本创建者编写。所以有几种解决方案(包括“不要写”)。
-
这是为 MATLAB 寻找解决方案的线索。谢谢你。我编辑了我的答案。什么是(包括“不要写”)?你能更详细地描述一下吗?
-
我的意思是“不要把 BOM 写到你的文本中”,如果你有选择的话。您可能可以将前 3 个字节读入 MatLab,检查它们是否形成 BOM,如果是则忽略它们,或者倒回文件并读取“照常”如果不是。但请注意,BOM 是一个 strong 指示文本文件可能包含 UTF8 编码字符。那么,轻率地忽略它可能并不明智。可能,正如我的链接中所建议的那样,您可以告诉 MatLab 期待 UTF8 文本。
标签: matlab text fopen fclose textscan