Websvn

De WindowsLinux.net - Astuces pour Windows et Linux !.

Sommaire

Présentation

Image:Logo-websvn.png‎ Websvn est disponible sur son site web : http://www.websvn.info/ , ou en package sur votre distribution préférée.

Bugs

Debian Lenny

Le package de websvn, contenu dans Debian lenny sous la version 2.0-4, comporte un petit bug d'encodage ISO-8859-1 / UTF-8.

Les accents n'apparaissent pas correctement quand le fichier est en ISO-8859-1, malgré le paramétrage de config.php.


Voici un correctifn pour afficher les accents aussi bien dans les projets en ISO-8859-1 comme pour ceux en UTF-8.

Cet article explique comment corriger ce bug.

Ces informations sont donc copiées ici pour la "postérité".

Étape 1 : fichier config.php

Dé-commenter :

$config->setContentEncoding('ISO-8859-1');

Et vérifier que le paramètre suivant soit correct :

$config->setDefaultLanguage('fr');

Étape 2 : fichier svnlook.php

Juste avant 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
*/
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 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);, ajoutez 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);
}


Liens

Internes

Voir aussi la page svn.

Outils personnels