Прочитайте строку из текстового файла, возвращающую странные символы в MATLAB

Я читаю строку типа "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 из другого места на жестком диске и прочитанный один раз с приведенным выше кодом для сравнения с некоторым существующим текстовым файлом, а затем замененный этим файлом с помощью movefile (основной файл работает правильно). Когда я создаю текстовый файл вручную и вставляю в него "1.0.2", эти коды правильно читают это значение. В чем проблема? Какое решение для MATLAB?

Спасибо.


person Eghbal    schedule 02.08.2014    source источник
comment
См. stackoverflow.com/questions/4931835/   -  person Jongware    schedule 03.08.2014
comment
@Jongware. Спасибо за комментарий. эти решения предназначены для С# и VB.Net. Мне нужно решение для MATLAB.   -  person Eghbal    schedule 03.08.2014
comment
Ах, но вы спросили, в чем проблема. Это спецификация, написанная вашим создателем текста. Так что есть несколько решений (в том числе не писать).   -  person Jongware    schedule 03.08.2014
comment
Это ключ к поиску решения для MATLAB. Спасибо. Я отредактировал свой ответ. Что такое (в том числе и не писать)? Можете ли вы описать его более подробно?   -  person Eghbal    schedule 03.08.2014
comment
Я имел в виду, что не стоит писать спецификацию в свой текст для начала, если у вас есть выбор. Вы, вероятно, можете прочитать первые 3 байта в MatLab, проверить, образуют ли они спецификацию, а затем проигнорировать их, если это так, или перемотать файл и прочитать как обычно, если нет. Но обратите внимание, что спецификация является сильным признаком того, что текстовый файл может содержать символы в кодировке UTF8. Тогда беспечно игнорировать это может быть неразумно. Возможно, как предложено в моей ссылке, вы могли бы указать MatLab ожидать текст UTF8.   -  person Jongware    schedule 03.08.2014


Ответы (1)


Вы можете использовать fopen('My_Text.txt', 'r', 'n', 'UTF-8'), чтобы открыть этот файл в кодировке UTF-8. Дополнительные сведения о трех добавленных параметрах см. в документации fopen.

Вставка fseek(reader, 3, 'bof') перед textscan также может решить эту проблему другим способом.  — это спецификация для UTF-8.

person Yvon    schedule 03.08.2014
comment
Спасибо за точный ответ. - person Eghbal; 03.08.2014