Возможно ли законное кодирование CR/LF символов в CSV файл?
(как часть стандарта CSV?)
Если да, то как мне кодировать CR/LF?
Возможно ли законное кодирование CR/LF символов в CSV файл?
(как часть стандарта CSV?)
Если да, то как мне кодировать CR/LF?
Да, вам нужно заключить в кавычки:
"some value
over two lines",some other value
Из этот документ, который является общепринятым стандартом CSV:
Поле, содержащее встроенные линейные перерывы должны быть окружены двойные кавычки
наиболее распространенный вариант csv, который является совместимым с excel, позволит использовать встроенные новые строки, пока поле окружено двойными кавычками.
foo,bar,"blah blah
more blah blah",baz
или
foo,bar,"blah blah
more blah blah"
или
"blah blah
more blah blah",baz
все допустимы. Этот механизм также допускает встроенные запятые.
Использование цитат вокруг текстовых полей без встроенных новых строк (или запятых) тоже отлично. Если сам текст содержит двойную кавычку, тогда механизм для его выхода состоит в том, чтобы, например, поставить два.
foo,bar,"this person said ""blah blah
more blah blah""",baz
Написание csv-ридера, который правильно справляется с этим, может быть сложным (особенно если вы полагаетесь на регулярные выражения).
Здесь упоминается стандарт для CSV. Мне было бы интересно узнать больше об этом - единственные стандарты, о которых я знаю, - это
что бы вы ни выбрали,
Я не думаю, что это часть стандарта (если таковой даже есть), но вы можете использовать стандартное экранирование в стиле C, т.е. encode\r\n.
Имейте в виду, однако, что если вы это сделаете, вы также должны закодировать escape-символ - то есть\yields\после декодирования.