Можете ли вы кодировать CR / LF в файлы CSV? - PullRequest
54 голосов
/ 19 февраля 2009

Возможно / законно ли каким-либо образом кодировать символы CR / LF в файл CSV?

(как часть стандарта CSV?)

Если так, как я должен кодировать CR / LF?

Ответы [ 4 ]

65 голосов
/ 19 февраля 2009

Да, вам нужно заключить в кавычки:

"some value
over two lines",some other value

С этот документ , который является общепринятым стандартом CSV:

Поле, которое содержит встроенный разрывы строк должны быть окружены двойные кавычки

12 голосов
/ 19 февраля 2009

самый распространенный вариант 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-ридера, который обрабатывает это правильно, может быть сложным (особенно если вы используете регулярные выражения).

7 голосов
/ 19 февраля 2009

Здесь упоминалось о стандарте для CSV. Мне было бы интересно узнать больше об этом - единственные стандарты, о которых я знаю, это

0 голосов
/ 19 февраля 2009

Я не думаю, что это часть стандарта (если он вообще есть), но вы могли бы использовать стандартное экранирование в стиле C, то есть кодировать \ r \ n.

Имейте в виду, однако, что если вы сделаете это, вы также должны закодировать escape-символ - т.е. \ yields \ после декодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...