Apostrophe dans les exports google agenda

Bonjour,
nous utilisons l’agenda Dolibarr (entre autres) pour nos comptes-rendu de réunions ou de conférences, etc. C’est pratique car ça permet de rattacher le CR à un projet, à un tiers …
J’ai créé une URL pour l’export de l’agenda Dolibarr vers Google agenda pour pouvoir faire des recherches textuelles dans l’agenda. Si j’ai tout compris il y a une mise à jour toutes les 12 ou 24 heures mais ça me convient.
Quand j’ouvre un événement dans dans Google agenda, tous les apostrophes sont remplacés par ’ autant dire que c’est illisible. Tous les accents semblent bien passer (je n’ai peut-être pas tout testé) mais pas les apostrophes …
De quel côté dois-je chercher ? dans la configuration de l’export de Dolibarr ou dans la configuration de Google ?
Merci,
Vincent

Bon, j’avais par ailleurs posé la question côté Google et voici la réponse :

Je viens de regarder dans /dolibarr-9.0.3/htdocs/public/agenda/agendaexport.php et l’encodage semble bien être indiqué en UTF-8 …
Est-ce dépendant du type de l’installation (le notre est 9.0.3 hébergé sur un serveur mutualisé chez OVH) ?

Salut v.doucet,

J’utilise le module externe google, qui lui ne pose pas de problème pour les événements (et permet en plus de synchroniser les contacts, les tiers, les adhérents)
et de faire de la géolocalisation de tout cela.
(pub gratuite, car je trouve vraiment ce module génial :happy: )

Je viens de faire le test : aucun problème avec tous les accents et les apostrophes

il faut donc surement se pencher sur le script qui génère le ical dans dolibarr: ça ne vient pas de l’encodage des tables.

1 « J'aime »

Merci, j’avais déjà vu dans d’autres de tes posts que tu utilisais ce module externe.

Pour ce qui est du script, je pense que c’est dans /dolibarr-9.0.3/htdocs/public/agenda/agendaexport.php

Ca dit bien que l’encodage est en UTF-8, non ? (en ligne 160 pour ma 9.0.3)

$outputencoding='UTF-8';
Je comprends que ça c’est pour l’écriture dans le fichier de sortie.

Par contre, pour la lecture des données (à partir de la ligne 68), il y a du code que je ne comprends pas bien … il y a des types de données ‹ alpha › et des types de ‹ apha › ??? (et des ‹ int › mais ça je comprend)

// Define format, type and filter
$format='ical';
$type='event';
if (GETPOST("format",'alpha')) $format=GETPOST("format",'apha');
if (GETPOST("type",'apha'))   $type=GETPOST("type",'alpha');

$filters=array();
if (GETPOST("year",'int')) 	         $filters['year']=GETPOST("year",'int');
if (GETPOST("id",'int'))             $filters['id']=GETPOST("id",'int');
if (GETPOST("idfrom",'int'))         $filters['idfrom']=GETPOST("idfrom",'int');
if (GETPOST("idto",'int'))           $filters['idto']=GETPOST("idto",'int');
if (GETPOST("project",'apha'))       $filters['project']=GETPOST("project",'apha');
if (GETPOST("logina",'apha'))        $filters['logina']=GETPOST("logina",'apha');
if (GETPOST("logint",'apha'))        $filters['logint']=GETPOST("logint",'apha');
if (GETPOST("notactiontype",'apha')) $filters['notactiontype']=GETPOST("notactiontype",'apha');
if (GETPOST("actiontype",'apha'))    $filters['actiontype']=GETPOST("actiontype",'apha');
if (GETPOST("notolderthan",'int'))   $filters['notolderthan']=GETPOST("notolderthan","int");
else $filters['notolderthan']=$conf->global->MAIN_AGENDA_EXPORT_PAST_DELAY;

Est-ce normal ? (j’étais prêt à tout modifier en ‹ alpha › mais je préfère poser la question avant …)

Si vous pouvez éclairer ma lanterne, d’avance merci,
Vincent

En fait, en remontant les includes, je pense que ça se passe plutôt dans htdocs/comm/action/class/ical.class.php

default: // no special string (SUMMARY, DESCRIPTION, ...)
	if ($tmpvalue)
	{
		$tmpvalue .= $text;
		if (! preg_match('/=$/',$text))	// No more lines
		{
			$key=$tmpkey;
			$value=quotedPrintDecode(preg_replace('/^ENCODING=QUOTED-PRINTABLE:/i','',$tmpvalue));
			$tmpkey='';
			$tmpvalue='';
		}
	}
	elseif (preg_match('/^ENCODING=QUOTED-PRINTABLE:/i',$value))
	{
		if (preg_match('/=$/',$value))
		{
			$tmpkey=$key;
			$tmpvalue=$tmpvalue.preg_replace('/=$/',"",$value);	// We must wait to have next line to have complete message
		}
		else
		{
			$value=quotedPrintDecode(preg_replace('/^ENCODING=QUOTED-PRINTABLE:/i','',$tmpvalue.$value));
		}
	}                    	//$value=quotedPrintDecode($tmpvalue.$value);
	if (! $insidealarm && ! $tmpkey) $this->add_to_array($type, $key, $value); // add to array
	break;

J’ai jeté un oeil sur ENCODING=QUOTED-PRINTABLE et à priori ça n’est pas tout à fait de l’UTF-8 …