2014-02-14 2 views
0

У меня есть проводной вопрос здесь,рубин CSV << [] не разрыв строки правильно

Я использую стандартный CSV < < [ «а», «б»] в моем коде, а выходной файл ведет себя просто отлично в Excel и Sublime Text 2 (изящный разрыв строки)

Однако я открываю файл с помощью блокнота Windows, он оказывается одной строкой.

И я пытаюсь использовать VBA для чтения этого файла по строкам, чтобы получить только одну строку.

Вот мой код,

require "csv" 
CSV::open("some_file.csv", "w") do |csv| 
    csv << ["a", "b"] 
    csv << ["a1", "b1"] 
end 

В Sublime Text 2 Я получаю

a,b 
a1,b1 

Однако в Блокноте Windows, я получаю только

a,ba1, b1 

Любая идея, почему?

[обновление] Это был блокнот Windows, а не текстовый редактор Windows, извините за ошибку.

+0

вы можете открыть его в режиме '' wb ''? –

+0

@ArupRakshit, спасибо. Да, я попробовал режим «wb» в рубине, он получил то же самое. –

+1

Хорошо .. Это не нужно. Сделайте что-то «CSV :: open» («some_file.csv», «w»,: row_sep => '\ r \ n') 'и дайте мне знать. –

ответ

2

Причина в том, что системы unix и windows не обрабатывают представление новой строки таким же образом. См. this wikipedia article. Для упрощения unix использует LF, который написан как \n, тогда как окна ожидают CR+LF: \r\n. Вот почему он появляется в одной строке при открытии в окнах. Вы можете использовать решение @ arup-rakshit, дополнительное \r не должно повредить, но вам может потребоваться указать его при чтении снова. В противном случае есть несколько различных инструментов для преобразования файла unix в файл Windows и наоборот.

+0

Хорошо! Я думал, что буду отвечать за это, но ты сделал от меня, поэтому я рад. :-) –

Смежные вопросы