Websvn

Version imprimableEnvoyer par emailversion PDF

Présentation

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 correctif 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.

Sponsors