web-dev-qa-db-ja.com

CR / LFをCSVファイルにエンコードできますか?

何らかの方法でCR/LF文字をCSVファイルにエンコードすることは可能ですか?

(CSV標準の一部として?)

その場合、CR/LFをどのようにエンコードすればよいですか?

57
Andy

はい、引用符で囲む必要があります。

"some value
over two lines",some other value

このドキュメント から。これは一般に受け入れられているCSV標準です。

埋め込み改行を含むフィールドは、二重引用符で囲む必要があります

68
Kent Boogaart

excel互換の最も一般的なcsvのバリアントは、フィールドが二重引用符で囲まれている限り、改行を埋め込むことができます。

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

または

foo,bar,"blah blah
more blah blah"

または

"blah blah
more blah blah",baz

すべて有効です。このメカニズムでは、埋め込みコンマも使用できます。

改行(またはコンマ)を埋め込まずにテキストフィールドを引用符で囲むことも適切です。テキスト自体に二重引用符が含まれている場合、それをエスケープするメカニズムは、たとえば2つをまとめることです。

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

これを正しく処理するcsvリーダーを作成するのは難しい場合があります(特に正規表現に依存している場合)。

13
ShuggyCoUk

ここでは、CSVの標準について言及しました。これについてもっと知りたいです-私が知っている唯一の基準は

7
anon

私はそれが標準の一部であるとは思いませんが(もしあれば)、標準のCスタイルのエスケープ、つまり\ r\nをエンコードすることができます。

ただし、これを行う場合は、エスケープ文字もエンコードする必要があることに注意してください。つまり、\はデコード後に\を返します。

0
Randolpho