何らかの方法でCR/LF文字をCSVファイルにエンコードすることは可能ですか?
(CSV標準の一部として?)
その場合、CR/LFをどのようにエンコードすればよいですか?
はい、引用符で囲む必要があります。
"some value
over two lines",some other value
このドキュメント から。これは一般に受け入れられているCSV標準です。
埋め込み改行を含むフィールドは、二重引用符で囲む必要があります
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リーダーを作成するのは難しい場合があります(特に正規表現に依存している場合)。
ここでは、CSVの標準について言及しました。これについてもっと知りたいです-私が知っている唯一の基準は
excelが受け入れるものは何でも
私はそれが標準の一部であるとは思いませんが(もしあれば)、標準のCスタイルのエスケープ、つまり\ r\nをエンコードすることができます。
ただし、これを行う場合は、エスケープ文字もエンコードする必要があることに注意してください。つまり、\はデコード後に\を返します。