Формат данных CSV. Изучение и написание обзора формата CSV, страница 2

4 Приложение-потребитель должен принимать либо запятую, символ табуляции (ASCII 0x09), вертикальную черту (слэш) (ASCII 0x7C) или точку с запятой (ASCII 0x3B) в качестве разделителя полей.

5 Разделителя полей не должна восприниматься как часть поля.

Это гарантирует совместимость данных между системами, использующими различные символы-разделители.

3.3 Маркер конца записи

Маркер конца записи (EOR), используемый в текстовых файлах, в том числе и в CSV часто меняется в зависимости от операционной системы, в которой файл был создан. Есть два управляющих символа ASCII, которые обычно используются для формирования EOR - символ возврата каретки (CR - ASCII 0x0D) и символ перевода строки (LF - ASCII 0x0A). Эта спецификация дает 3 варианта завершения записи: CR + LF, LF или CR.

Правила для маркера конца записи:

1 Концом записи должен быть один из следующих маркеров: CR + LF, LF или CR.

CR использует спектр операционных систем, включая Mac OS 9-. CR + LF используется в Microsoft Windows и MS-DOS. LF используется на Unix и Unix-подобных систем, включая Linux.

2 После выбора маркера конца записи  он должен быть использован во всем файле.

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

3 Маркерs EOR не должны восприниматься как часть записи CSV.

Это правило гарантирует совместимость данных между различными операционными системами.

Если символ (ы), которые образуют EOR целенаправленно используются в полезных данных, их необходимо экранировать двойными кавычками.

Маркером EOR недолжны являться концом строки (EOL). Это различие необходимо, чтобы CSV файлы, которые содержат CR/LF символов в полезных данных могли занимать несколько строк на странице и при этом являться одной записью.


4. Запись заголовка

Обычно это используется для обработанных вручную CSV-файлов, для использования пустых или пропущенных столбцов или для создания дополнительных столбцов, которые не зависят от пользовательского приложения Запись заголовка позволяет приложению потребителя узнавать какие поля и в каком порядке будут записаны в файле.

5. Защита поля данных

Это наиболее сложный аспект формата CSV, и, как результат, он является одним из наиболее вероятных причин, почему нет общего CSV стандарта. Простое изменение характера разделения полей не гарантирует, что полученный файл не будет подвержен нелегальному доступу.

5.1 Двойные кавычки для защиты

Когда в поле содержится символ, так же применяемый для разделения полей, то должен быть механизм, препятствующий неправомерному доступу к информации, путающий CSV приложение потребителя. Стандартный механизм защиты основан на разграничении полей двойными кавычками (ASCII 0x22). Данный схема показана на рис. 3.

http://mastpoint.curzonnassau.com/csv-1203/Diagram4.jpg

Рисунок 3. Защищенные поля внутри разделителей полей.

Этот механизм разделителя решает проблему разделения встроенных символов и символа конца записи (EOR), но и создает новую проблему: Что, если поле должно содержать двойные кавычки?

5.2 Двухместный двойные кавычки

Данный метод позволяет полю содержать двойные кавычки в качестве полезных данных Наглядно это показано на рис. 4.

http://mastpoint.curzonnassau.com/csv-1203/Diagram5.jpg

Рисунок 4. Использование двойных кавычек..

Это достигается с помощью двух последовательных двойных кавычек для каждой кавычки, необходимой в полезных данных.


6. Пример реализации.

Исходный код:

1997,Ford,E350,"ac, abs, moon",3000.00

1999,Chevy,"Venture ""Extended Edition""","",4900.00

1996,Jeep,Grand Cherokee,"MUST SELL!

air, moon roof, loaded",4799.00

Результирующая таблица:

1997

Ford

E350

ac, abs, moon

3000

1999

Chevy

Venture «Extended Edition»

4900

1996

Jeep

Grand Cherokee

MUST SELL!
air, moon roof, loaded

4799


7. Библиотеки для работы с форматом

Так как CSV-файл по сути представляет собой текстовый файл, то специальные библиотеки для работы с ним не требуются. Для удобства некоторые программисты создают собственные реализации для работы с такими файлами, но они представляют собой лишь обертки для функций чтений/записи и парсинга текстовых файлов


8. Тестовая программа

1.  Запись в файл CSV осуществляется при нажатии на кнопку «Записать в файл». В файл записываются данные из трех полей ввода в виде трех ячеек таблицы.

2.  Кнопка «Посмотреть файл» открывает файл CSV в MS Excel.

3.  В выпадающем меню можно выбрать заранее заготовленные типы данных для записи в файл, которые тут же отображаются в текстовых полях ввода.


Литература

1.  Керзон Нассау, CSV File Format Specification. [Электронный ресурс]. URL:http://mastpoint.curzonnassau.com/csv-1203/(дата обращения: 25.05.2013).

2.  CSV. [Электронный ресурс]. URL:http://ru.wikipedia.org/wiki/CSV(дата обращения: 25.05.2013).