Si vous avez des projets dans votre Subversion non encodés en UTF-8, en ISO-8859-15 ou ISO-8859-1 par exemple, il y a de grande chance pour que les accents apparaissent mal dans Websvn 2.0. Voici ce que nous avons fait à Tela Botanica pour résoudre ce problème.

Fichier include/config.php

Pour la section LANGUAGE SETUP, décommenter seulement les lignes contenant : $config->setContentEncoding('ISO-8859-15'); Indiquer ici votre encodage autre que UTF-8 utilisé par vos projets $config->setDefaultLanguage('fr'); Indiquer ici votre langue.

Pour l'instant, un rapide tour du code de Websvn semble montrer que les lignes suivantes ne fonctionnent pas : //$config->setContentEncoding('utf-8', 'MyEnc'); On peut donc seulement avoir des projets hébergés dans le dépôt dans deux encodages distincts : UTF-8 et un autre au choix (ici ISO-8859-15).

Fichier include/svnlook.php

Juste avant la méthode listFileContents vers la ligne 546 ajouter le code suivant :

	/**
	 * Méthode permettant de détecter réellement l'encodage utf8.
	 * mb_detect_encoding plante si la chaine de caractère se termine par un caractère accentué.
	 * Provient de  PHPDIG.
	 * 
	 * @param string la chaine à vérifier.
	 * @return bool true si c'est de l'utf8, sinon false.
	 * @access private
	 */
	private function _detecterUtf8($str) {
		if ($str === mb_convert_encoding(mb_convert_encoding($str, 'UTF-32', 'UTF-8'), 'UTF-8', 'UTF-32')) {
			return true;
		} else {
			return false;
		}
	}

Dans la méthode "listFileContents" ajouter : - après la ligne contenant : $tmpStr = file_get_contents($tmp); le code suivant :

         // Si nous n'avons pas à faire à de l'utf8 nous effectuons un remplacement
         if (! $this->_detecterUtf8($tmpStr)) {
            $tmpStr = toOutputEncoding($tmpStr);
         }

- après la ligne contenant : $line = fgets($result, 1024); le code suivant :

               // Si nous n'avons pas à faire à de l'utf8 nous effectuons un remplacement
               if (! $this->_detecterUtf8($line)) {
                  $line = toOutputEncoding($line);
               }

- après la ligne #756 contenant $line = fgets($handle); dans la méthode getLog() ajouter le code suivant :

		// Nettoyage des lignes non utf8
		if (!$this->_detecterUtf8($line)) {
			$line = toOutputEncoding($line);
		}

Voilà, tout les accents devraient apparaître normalement dans les projets en ISO-8859-15 comme pour ceux en UTF-8.