Skip to content
Snippets Groups Projects

Issue #2954871: Add support for more encondings

1 unresolved thread
1 file
+ 25
1
Compare changes
  • Side-by-side
  • Inline
+ 25
1
@@ -67,6 +67,13 @@ class CsvEncoder implements EncoderInterface, DecoderInterface {
*/
protected static $format = 'csv';
/**
* Encoding option for the CSV file.
*
* @var string
*/
protected $encoding = 'utf-8';
/**
* Indicates usage of UTF-8 signature in generated CSV file.
*
@@ -147,7 +154,7 @@ class CsvEncoder implements EncoderInterface, DecoderInterface {
try {
// Instantiate CSV writer with options.
$csv = Writer::createFromFileObject(new SplTempFileObject());
$csv = Writer::createFromStream(tmpfile());
$csv->setDelimiter($this->delimiter);
$csv->setEnclosure($this->enclosure);
$csv->setEscape($this->escapeChar);
@@ -156,6 +163,22 @@ class CsvEncoder implements EncoderInterface, DecoderInterface {
$csv->setNewline(stripcslashes($this->newline));
}
switch($this->encoding) {
case 'iso-8859-15' :
CharsetConverter::addTo($csv, 'UTF-8', 'ISO-8859-15');
break;
case 'utf-16be':
$csv->setOutputBOM(Reader::BOM_UTF16_BE);
CharsetConverter::addTo($csv, 'UTF-8', 'UTF-16BE');
break;
case 'utf-16le':
$csv->setOutputBOM(Reader::BOM_UTF16_LE);
CharsetConverter::addTo($csv, 'UTF-8', 'UTF-16LE');
break;
default:
break;
}
// Set data.
if ($this->useUtf8Bom) {
$csv->setOutputBOM(ByteSequence::BOM_UTF8);
@@ -386,6 +409,7 @@ class CsvEncoder implements EncoderInterface, DecoderInterface {
$this->delimiter = str_replace('\t', "\t", $settings['delimiter']);
$this->enclosure = $settings['enclosure'];
$this->escapeChar = $settings['escape_char'];
$this->encoding = $settings['encoding'];
$this->useUtf8Bom = ($settings['encoding'] === 'utf8' && !empty($settings['utf8_bom']));
Please register or sign in to reply
$this->newline = isset($settings['new_line']) ? $settings['new_line'] : NULL;
$this->stripTags = $settings['strip_tags'];
Loading