web-dev-qa-db-fra.com

Pouvez-vous encoder CR / LF en fichiers CSV?

Est-il possible/légal d'encoder en quelque sorte des caractères CR/LF dans un fichier CSV?

(dans le cadre d'une norme CSV?)

Si oui, comment dois-je encoder CR/LF?

57
Andy

Oui, vous devez mettre entre guillemets:

"some value
over two lines",some other value

De ce document , qui est la norme CSV généralement acceptée:

Un champ contenant des sauts de ligne intégrés doit être entouré de guillemets doubles

68
Kent Boogaart

la variante la plus courante de csv qui est compatible avec Excel permettra des sauts de ligne intégrés tant que le champ est entouré de guillemets doubles.

foo,bar,"blah blah
more blah blah",baz

ou

foo,bar,"blah blah
more blah blah"

ou

"blah blah
more blah blah",baz

sont tous valides. Ce mécanisme permet également des virgules intégrées.

L'utilisation de guillemets autour de champs textuels sans nouvelles lignes (ou virgules) intégrées est également très bien. Si le texte lui-même contient un guillemet double, alors le mécanisme pour l'échapper est de mettre deux ensemble, par exemple.

foo,bar,"this person said ""blah blah 
more blah blah""",baz

Écrire un lecteur csv qui gère cela correctement peut être délicat (surtout si vous comptez sur des expressions régulières).

13
ShuggyCoUk

On a évoqué ici une norme pour le CSV. J'aimerais en savoir plus à ce sujet - les seules normes que je connaisse sont

7
anon

Je ne pense pas que cela fasse partie de la norme (s'il y en a même une), mais vous pouvez utiliser un échappement de style C standard, c'est-à-dire encoder\r\n.

Gardez à l'esprit, cependant, que si vous le faites, vous devez également encoder le caractère d'échappement - c'est-à-dire\cède\après le décodage.

0
Randolpho