Перейти до вмісту
Convertube

Файли CSV: формат без типів, без кодування й без комітету

Що таке CSV насправді, чому той самий файл по-різному відкривається у двох програмах і що кажуть правила лапок. Конвертуйте CSV у браузері, без завантаження.

Коротко

Тип
Документи
Розширення
.csv
MIME-тип
text/csv

Файл .csv — це текстовий файл. Немає заголовка, версії, інформації про типи й нічого двійкового — відкрийте його в Блокноті, і побачите кожен його байт. Кожен рядок — це рядок таблиці, і щось розділяє поля. Ось і весь формат, тому все вміє його записувати й тому жодні дві програми не згодні щодо того, що він означає.

Докладніше

Двадцять п’ять років він жив без специфікації. RFC 4180 з’явився у 2005 році й прямо має статус інформаційного, а не стандарту — він описує, що робить більшість реалізацій, а не наказує комусь, що робити. Що він таки встановлює, то це лапки: поле, що містить роздільник, лапки чи розрив рядка, береться в подвійні лапки, а лапки всередині такого поля пишуться двічі. Це правило — різниця між тим, що «Widget, large» є однією клітинкою, і тим, що двома, і саме його пропускають наївні парсери.

Роздільник — не обов’язково кома. Електронна таблиця в локалі, де десяткові дроби пишуть як 1,5, не може водночас використовувати кому для розділення полів, тож Excel там експортує крапку з комою — на тому самому комп’ютері, з того самого меню, створюючи файл, який не відкриє сусідня країна. Експорт із баз даних часто використовує табуляцію. Кожен інструмент, що добре читає CSV, вгадує роздільник за першими кількома рядками, і цей сайт робить так само.

Немає й декларації кодування, і саме тут дані справді губляться. CSV із китайськими іменами, збережений однією програмою й відкритий іншою, повертається мішаниною символів, бо одна припустила UTF-8, а інша — системну кодову сторінку. А оскільки кожне поле — текст без типу, електронна таблиця під час імпорту вгадує наново: нулі на початку зникають із номерів деталей, довгі ідентифікатори перетворюються на експоненційний запис, а все, що схоже на дату, нею стає. З файлом усе було гаразд; хибним було його прочитання.

Конвертувати CSV в інші формати

Запитання про CSV

Чи CSV — це просто текстовий файл?

Так, повністю. Без контейнера, без стиснення, нічого двійкового. Його відкриває будь-який текстовий редактор, і ви бачите саме те, що він містить.

Чому мій CSV використовує крапку з комою?

Бо його експортовано в локалі, де кома є десятковим роздільником, тож кома не могла водночас розділяти поля. Це все одно CSV, і будь-який гідний зчитувач визначає роздільник, а не припускає.

Чому зникли мої нулі на початку?

Бо CSV не зберігає типів, і електронна таблиця вгадала. «007» схоже на число, тож стало 7. З файлом усе було гаразд — так вирішив імпорт. Більшість програм електронних таблиць дозволяють під час імпорту задати стовпцю текстовий тип, і це єдине надійне рішення.

Чому мій китайський текст спотворено?

Бо файл не повідомляє свого кодування, і програма, що його відкрила, вгадала інакше, ніж програма, що його записала. Збереження в UTF-8 з міткою порядку байтів змушує Excel прочитати його правильно ціною мітки, яку деякі інші інструменти показують як зайві символи.

Чи можна тут конвертувати CSV у PDF?

Так. Він розбирається як CSV, а не ділиться за комами, тож поля в лапках уціліють, а ширина стовпців залежить від вмісту, з жирним рядком заголовка. Ви отримуєте документ для читання й друку — у PDF нічого не можна сортувати чи підсумовувати.

А як щодо конвертації в Excel?

Не потрібно: будь-яка програма електронних таблиць напряму відкриває CSV, а попередня конвертація лише додає крок, на якому вгадуються типи. Конвертація, яка тут є, — у зворотному напрямку: PDF в Excel, що відтворює таблицю зі сторінки, яка її ніколи не записувала.