«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Экспорт JSON в CSV: примечание о CSV и Unicode

Экспорт JSON в CSV: примечание о CSV и Unicode

Опубликовано 1 августа 2024 г.
Просматривать:126

Export JSON to CSV: a note on CSV and Unicode

Существует несколько JS-библиотек, которые позволяют превосходно экспортировать. Но что, если мы хотим следовать минималистическому подходу, избегая дополнительных зависимостей?

Самый простой подход — создать CSV-файл из JSON, который можно легко открыть в Excel.

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

CSV-формат

Этот общий формат RFC 4180 и тип MIME для файлов с разделителями-запятыми (CSV) определяют определение формата CSV. Обратите внимание, что это всего лишь памятка, поскольку формат CSV официально не стандартизирован.

Основные определения

  1. Каждая запись располагается на отдельной строке, разделенной разрывом строки (CRLF).
  2. Последняя запись в файле может иметь или не иметь конечный разрыв строки.
  3. Заголовок должен содержать одинаковое количество полей во всем файле.
  4. Каждое поле может быть заключено в двойные кавычки, а может и не быть.
  5. Поля, содержащие разрывы строк (CRLF), двойные кавычки и запятые, должны быть заключены в двойные кавычки.
  6. Если для заключения полей используются двойные кавычки, то двойную кавычку, появляющуюся внутри поля, необходимо экранировать, поставив перед ней другую двойную кавычку.

Кодирование

В моих данных JSON есть символы æ å ø из набора символов ISO Latin-1 (ISO/IEC 8859-1), которые необходимо учитывать при создании файла csv.

Некоторые выдержки из стандарта Unicode® версии 15.0, на которые стоит обратить внимание.

Юникод против UTF-8/16/32

Из стандартной версии Unicode® 15.0:

  • Юникод — это универсальный стандарт кодировки письменных символов и текста, содержащий 149 186 символов мировых алфавитов.
  • Символы Юникода представлены в одной из трех форм кодировки: 32-битной форме (UTF-32), 16-битной форме (UTF-16) и 8-битной форме (UTF-8).
  • Консорциум Unicode полностью одобряет использование любой из трех форм кодировки Unicode как соответствующего способа реализации стандарта Unicode. Важно не попасть в ловушку, пытаясь, например, отличить «UTF-8 от Unicode». UTF-8, UTF-16 и UTF-32 являются одинаково допустимыми и совместимыми способами реализации закодированных символов стандарта Unicode.

Метка порядка байтов (BOM)

  • Символ U FEFF (UTF-8 EF BB BF), используемый для обозначения порядка байтов, называется неразрывным пространством нулевой ширины.
  • Формы кодирования обычного текста Unicode UTF-16 и UTF-32 чувствительны к порядку байтов, который используется при записи данных в файл.
  • Идентификация последовательности байтов в начале поток данных можно рассматривать как почти наверняка указание на то, что поток данных использует схему кодирования UTF-8.

Короче говоря, добавление неразрывного пробела нулевой ширины перед строкой CSV заставит Excel применять кодировку UTF-8 вместо 1252: Western European (Windows) или какой-либо другой кодировки, которую Excel выберет в случае, если символ U FEFF не предоставлен.

В следующем посте этой серии я покажу разницу между созданием CSV-файла с пустым пробелом нулевой ширины и без него...

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/andrewelans/export-json-to-csv-what-is-csv-and-unicode-2341?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected] удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3