I frequently still use the ASCII control codes (or, more accurately, their Unicode equivalents) “Unit Separator” and “Record Separator,” US and RS in the character table. If you don’t, I highly recommend trying them for any “CSVs” you write instead of commas.
I’ve found they work great until a human being is involved.
Most of the time, if I’m generating a CSV, it’s as intermediate data as part of a longer ETL pipeline. I have never had much luck with human-modified spreadsheets and data files in general… they’re always too inconsistent.
Swings and roundabouts. No one understands how to use US/RS, let alone FS/GS, but as soon as you have to work with a human to get a properly escaped CSV you’ll bump into the same problems - even if you scream RFC 4180 until you’re blue in the face.