Почему в CSV-файлах, сформированных MS Excel, не всегда разделители — запятые

Как известно, CSV означает «Comma Separated Values», т.е. «значения, разделённые запятыми». Но не всегда в CSV-файле значения разделены именно запятыми: скорее всего, если вы сделаете экспорт данных из Microsoft Excel в CSV, то получите файл с разделителями в виде «;». В чём же дело?

Для США разделителем целой и дробной части в числах является точка, а разделителем элементов списка — запятая:

"Lisa Simpson",8,156.05 ← 3 элемента, всё понятно

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

"Иван Петров",17,99,25 ← путаница! сколько элементов?
"Иван Петров";17;99,25 ← порядок: всё таки 3 элемента

Поэтому Microsoft Excel генерирует файл согласно региональных настроек:

Regional Settings for CSV

Если поставить настройки как в США — будет «правильный» CSV-файл.

Но несмотря на то, что определённая логика в действиях программы есть, это всё же не соответствует стандарту — RFC 4180, и это неправильно — так же неправильно, как при генерации HTML-файла заменять в тэгах <TABLE> на <ТАБЛИЦА>, если установлена русская локаль. 🙂

Немного рекламы:
» international wholesale jewelry for body piercing;
» красивый свадебный букет невесты теперь можно заказать в интернет-магазине (более 150 видов!);
» на рядовой и облицовочный кирпич цена не всегда является решающим фактором, качество — важнее, ведь строим на десятки лет.
Желаете отблагодарить автора? Есть несколько возможностей! :-)
Яндекс.Деньги:   PayPal:
Прочие варианты:


2 комментария на “Почему в CSV-файлах, сформированных MS Excel, не всегда разделители — запятые”

  1. N.vtym Says:

    Я менял разделители — мне не помогло..

  2. Белый Орёл Says:

    Используйте OpenOffice или LibreOffice Calc они понимают любые разделители