Specyfikacja formatu CSV jest zdefiniowana w RFC 4180 . Ta specyfikacja została opublikowana, ponieważ
nie istnieje formalna specyfikacja, która pozwala na szeroki zakres interpretacji plików CSV
Niestety od 2005 roku (data publikacji RFC) nic się nie zmieniło. Wciąż mamy szeroką gamę wdrożeń. Ogólne podejście zdefiniowane w RFC 4180 polega na umieszczaniu pól zawierających znaki takie jak przecinki w cudzysłowie, jednak to zalecenie nie zawsze spełnia inne oprogramowanie.
Problem polega na tym, że w różnych europejskich lokalizacjach przecinek służy jako kropka dziesiętna, więc 0,005
zamiast tego piszesz 0.005
. Jednak w innych przypadkach przecinki są używane zamiast spacji do sygnalizowania grup cyfr, np. 4,000,000.00
(Patrz tutaj ). W obu przypadkach użycie przecinków może prowadzić do błędów w odczycie danych z plików csv, ponieważ twoje oprogramowanie tak naprawdę nie wie, czy 0,005, 0,1
są to dwie liczby, czy cztery różne liczby (patrz przykład tutaj ).
Wreszcie, jeśli przechowujesz tekst w pliku danych, przecinki są znacznie bardziej powszechne w tekście niż, na przykład, średniki, więc jeśli tekst nie jest ujęty w cudzysłów, dane takie można również łatwo odczytać z błędami .
Nic nie czyni przecinków lepszymi ani gorszymi separatorami pól, o ile pliki CSV są używane zgodnie z zaleceniami RFC 4180, które chronią przed problemami opisanymi powyżej. Jeśli jednak istnieje ryzyko zastosowania uproszczonego formatu CSV, który nie zawiera pól w cudzysłowie, lub zalecenie może być zastosowane niespójnie, wówczas inne separatory (np. Średnik) wydają się bezpieczniejsze.