diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php index b417b832304dc4f305d3bf5cc266ae4562f3fddd..68f2474ad2ac9dae24e0403eb71fc1c340f19bb7 100644 --- a/ecrire/inc/documents.php +++ b/ecrire/inc/documents.php @@ -44,7 +44,12 @@ function get_spip_doc($fichier) { return $fichier; } -// Filtre pour #FICHIER +// Constante indiquant le charset probable des documents non utf-8 joints + +@define('CHARSET_JOINT', 'iso-8859-1'); + +// Filtre pour #FICHIER permettant d'incruster le contenu d'un document +// Si 2e arg fourni, conversion dans le charset du site si possible // http://doc.spip.org/@contenu_document function contenu_document($arg, $charset='') @@ -64,9 +69,13 @@ function contenu_document($arg, $charset='') } $r = spip_file_get_contents($f); + if ($charset) { - include_spip('inc/charset'); - $r = importer_charset($r, $charset); + include_spip('inc/charset'); + if ($charset !== 'auto') { + $r = importer_charset($r, $charset); + } elseif ($GLOBALS['meta']['charset'] == 'utf-8' AND !is_utf8($r)) + $r = importer_charset($r, CHARSET_JOINT); } return $r; } diff --git a/prive/modeles/text.html b/prive/modeles/text.html index 0b3e5914d49dac0380056e4008277c422f02ead2..192e022eadfa1a925e41eedaccb20b621ea8f692 100644 --- a/prive/modeles/text.html +++ b/prive/modeles/text.html @@ -1,3 +1,3 @@ <BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID} {tout} - >[(#FICHIER|contenu_document{#ENV{charset}}|appliquer_filtre{#MIME_TYPE,filtre_text_txt_dist} + >[(#FICHIER|contenu_document{#ENV{charset,auto}}|appliquer_filtre{#MIME_TYPE,filtre_text_txt_dist} )]</BOUCLE_tous>