diff --git a/application/cmdbabstract.class.inc.php b/application/cmdbabstract.class.inc.php index d144f6925..d4c9a683d 100644 --- a/application/cmdbabstract.class.inc.php +++ b/application/cmdbabstract.class.inc.php @@ -941,12 +941,12 @@ abstract class cmdbAbstractObject extends CMDBObject implements iDisplay return $oDataTable->Display($oPage, $oSettings, $bDisplayMenu, $sSelectMode, $bViewLink, $aExtraParams); } - static function DisplaySetAsCSV(WebPage $oPage, CMDBObjectSet $oSet, $aParams = array()) + static function DisplaySetAsCSV(WebPage $oPage, CMDBObjectSet $oSet, $aParams = array(), $sCharset = 'UTF-8') { - $oPage->add(self::GetSetAsCSV($oSet, $aParams)); + $oPage->add(self::GetSetAsCSV($oSet, $aParams, $sCharset)); } - static function GetSetAsCSV(DBObjectSet $oSet, $aParams = array()) + static function GetSetAsCSV(DBObjectSet $oSet, $aParams = array(), $sCharset = 'UTF-8') { $sSeparator = isset($aParams['separator']) ? $aParams['separator'] : ','; // default separator is comma $sTextQualifier = isset($aParams['text_qualifier']) ? $aParams['text_qualifier'] : '"'; // default text qualifier is double quote @@ -1064,7 +1064,8 @@ abstract class cmdbAbstractObject extends CMDBObject implements iDisplay else { $value = $oObj->Get($sAttCodeEx); - $aRow[] = $oAttDef->GetAsCSV($value, $sSeparator, $sTextQualifier, $oObj, $bLocalize); + $sCSVValue = $oAttDef->GetAsCSV($value, $sSeparator, $sTextQualifier, $oObj, $bLocalize); + $aRow[] = iconv('UTF-8', $sCharset.'//IGNORE//TRANSLIT', $sCSVValue); } } } diff --git a/pages/audit.php b/pages/audit.php index 45e3eb893..31d414d10 100644 --- a/pages/audit.php +++ b/pages/audit.php @@ -180,15 +180,15 @@ try if ($sFileName != null) { $oP = new CSVPage("iTop - Export"); - $sCSVData = cmdbAbstractObject::GetSetAsCSV($oErrorObjectSet, array('localize_values' => true, 'fields_advanced' => $bAdvanced)); $sCharset = MetaModel::GetConfig()->Get('csv_file_default_charset'); + $sCSVData = cmdbAbstractObject::GetSetAsCSV($oErrorObjectSet, array('localize_values' => true, 'fields_advanced' => $bAdvanced), $sCharset); if ($sCharset == 'UTF-8') { - $sOutputData = UTF8_BOM.iconv('UTF-8', 'UTF-8//IGNORE//TRANSLIT', $sCSVData); + $sOutputData = UTF8_BOM.$sCSVData; } else { - $sOutputData = iconv('UTF-8', $sCharset.'//IGNORE//TRANSLIT', $sCSVData); + $sOutputData = $sCSVData; } if ($sFileName == '') { diff --git a/webservices/export.php b/webservices/export.php index a6a01575f..1d4eab3c3 100644 --- a/webservices/export.php +++ b/webservices/export.php @@ -223,15 +223,15 @@ if (!empty($sExpression)) case 'csv': $oP = new CSVPage("iTop - Export"); $sFields = implode(',', $aFields); - $sCSVData = cmdbAbstractObject::GetSetAsCSV($oSet, array('fields' => $sFields, 'fields_advanced' => $bFieldsAdvanced, 'localize_values' => $bLocalize)); $sCharset = MetaModel::GetConfig()->Get('csv_file_default_charset'); + $sCSVData = cmdbAbstractObject::GetSetAsCSV($oSet, array('fields' => $sFields, 'fields_advanced' => $bFieldsAdvanced, 'localize_values' => $bLocalize), $sCharset); if ($sCharset == 'UTF-8') { - $sOutputData = UTF8_BOM.iconv('UTF-8', 'UTF-8//IGNORE//TRANSLIT', $sCSVData); + $sOutputData = UTF8_BOM.$sCSVData; } else { - $sOutputData = iconv('UTF-8', $sCharset.'//IGNORE//TRANSLIT', $sCSVData); + $sOutputData = $sCSVData; } if ($sFileName == '') {