diff --git a/papaparse.js b/papaparse.js index 5ed703e..3758ccf 100755 --- a/papaparse.js +++ b/papaparse.js @@ -273,6 +273,9 @@ License: MIT /** quote character */ var _quoteChar = '"'; + /** escaped quote character, either "" or " */ + var _escapedQuote = _quoteChar + _quoteChar; + /** whether to skip empty lines */ var _skipEmptyLines = false; @@ -343,6 +346,10 @@ License: MIT if (typeof _config.header === 'boolean') _writeHeader = _config.header; + + if (_config.escapeChar !== undefined) { + _escapedQuote = _config.escapeChar + _quoteChar; + } } @@ -429,7 +436,7 @@ License: MIT if (str.constructor === Date) return JSON.stringify(str).slice(1, 25); - str = str.toString().replace(quoteCharRegex, _quoteChar + _quoteChar); + str = str.toString().replace(quoteCharRegex, _escapedQuote); var needsQuotes = (typeof _quotes === 'boolean' && _quotes) || (Array.isArray(_quotes) && _quotes[col]) diff --git a/tests/test-cases.js b/tests/test-cases.js index b0610dd..34d8471 100644 --- a/tests/test-cases.js +++ b/tests/test-cases.js @@ -1732,6 +1732,12 @@ var UNPARSE_TESTS = [ input: [{a: null, b: ' '}, {}, {a: '1', b: '2'}], config: {skipEmptyLines: 'greedy', header: true}, expected: 'a,b\r\n1,2' + }, + { + description: "Use different escapeChar", + input: [{a: 'foo', b: '"quoted"'}], + config: {header: false, escapeChar: '\\'}, + expected: 'foo,"\\"quoted\\""' } ];