I don't think you need to go overboard with escaping things. The "|" symbol for example does not need escaping in a CSV file. The common form of CSV as understood by say Excel works like this:
- If a field contains a comma, a new line (yes embedded newlines are legal) or a double quote character then the whole field must be enclosed in double quotes.
- Any double quote characters in a field must be 'escaped' by preceding them with a another double quote (ie: " becomes "")