Fix: [ bug #253 ] Non UTF-8 characters in CSV exports

This commit is contained in:
Laurent Destailleur 2011-12-21 16:15:21 +01:00
parent cae7b6c39c
commit ba5adb29d8
2 changed files with 11 additions and 8 deletions

View File

@ -166,7 +166,7 @@ class ExportCsv extends ModeleExports
foreach($array_selected_sorted as $code => $value)
{
$newvalue=$outputlangs->transnoentities($array_export_fields_label[$code]);
$newvalue=$this->csv_clean($newvalue);
$newvalue=$this->csv_clean($newvalue,$outputlangs->charset_output);
fwrite($this->handle,$newvalue.$this->separator);
}
@ -207,7 +207,7 @@ class ExportCsv extends ModeleExports
$newvalue=$outputlangs->transnoentities($reg[1]);
}
$newvalue=$this->csv_clean($newvalue);
$newvalue=$this->csv_clean($newvalue,$outputlangs->charset_output);
fwrite($this->handle,$newvalue.$this->separator);
$this->col++;
@ -237,15 +237,17 @@ class ExportCsv extends ModeleExports
/**
* Clean a cell to respect rules of CSV file cells
* @param newvalue String to clean
* @return string Value cleaned
*
* @param string $newvalue String to clean
* @param string $charset Output character set
* @return string Value cleaned
*/
function csv_clean($newvalue)
function csv_clean($newvalue, $charset)
{
$addquote=0;
// Rule Dolibarr: No HTML
$newvalue=dol_string_nohtmltag($newvalue);
$newvalue=dol_string_nohtmltag($newvalue,1,$charset);
// Rule 1 CSV: No CR, LF in cells
$newvalue=str_replace("\r",'',$newvalue);

View File

@ -3499,12 +3499,13 @@ function picto_required()
* Clean a string from all HTML tags and entities
* @param StringHtml String to clean
* @param removelinefeed Replace also all lines feeds by a space
* @param pagecodeto Encoding of input string
* @return string String cleaned
*/
function dol_string_nohtmltag($StringHtml,$removelinefeed=1)
function dol_string_nohtmltag($StringHtml,$removelinefeed=1,$pagecodeto='UTF-8')
{
$pattern = "/<[^>]+>/";
$temp = dol_entity_decode($StringHtml);
$temp = dol_entity_decode($StringHtml,$pagecodeto);
$temp = preg_replace($pattern,"",$temp);
// Supprime aussi les retours