Anycontent et les caractères accentués + users accentués de phpBB Anycontent et les caractères accentués + users accentués de phpBB
 

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

Anycontent et les caractères accentués + users accentués de phpBB

Started by laubert, December 07, 2005, 10:51:55 PM

Previous topic - Next topic

0 Members and 3 Guests are viewing this topic.

laubert

Salut,

Je teste actuellement la 1.4.2 et mon fichier "anycontent" qui comporte des é et des è.
Ceux-ci sont remplacés par des ? sous Netscape et par de petits carrés sous Internet Explorer.
J'ai essayé de remplacer les é par des &ecute; mais ça n'arrange rien.

Quelqu'un connait la soluce ?

Merci.

Edit :
Rien à voir avec anycontent, mais quelqu'un qui teste avec moi et dont le prénom comporte des caractères accentués vient de me signaler que ces caractères sont remplacés par des ? en haut dans Quitter[...]
Etonnant non ?

Titooy

Il s'agit d'un problème de codage des caractères. Coppermine est passé de l'unicode en option dans les versions 1.3.x à l'unicode sans autre option pour les versions 1.4.x. Votre fichier anycontent.php doit donc être codé en UTF-8. Il suffit de l'ouvrir dans un éditeur de texte qui le supporte et le convertir en unicode (UTF-8). Personnellement j'utilise UltraEdit mais si vous êtes sous Windows XP, le notepad permet l'enregistrement en unicode. Je dois avouer ne pas connaître la différence entre les 3 versions qu'il propose mais a priori je choisirais UTF-8 vu que c'est ce qui est signalé dans le code html comme charset.

Pour ce qui est du prénom, votre base de données n'a probablement pas été convertie en UTF-8 lors de la mise à jour. Vous pouvez lancer l'utilitaire <coppermine>/charsetmgr.php s'il fonctionne. Je n'ai pas encore trouvé de solution si ce n'est pas le cas, à part corriger manuellement dans la base de données.

laubert

Merci.

Pour anycontent, j'utilise ConText, je vais voir si l'option existe, sinon j'utiliserai ce que tu proposes.

En ce qui concerne le prénom, il provient de la base phpBB puisqu'il s'agit d'un bridge, donc c'est plus problématique...

laubert

Quote from: Titooy on December 08, 2005, 12:59:09 AM
a priori je choisirais UTF-8
C'est exactement ça et ça fonctionne  :)

En ce qui concerne les noms d'utilisateurs accentués issus de phpBB...
.. on fera avec, ça ne semble pas invalidant.

Titooy

Pour votre problème de nom d'utilisateur, vous pouvez changer USER_NAME par utf8_encode(USER_NAME) dans votre theme.php et/ou dans le fichier include/themes.inc.php

Dans le cas précis de l'affichage du nom à côté de "Quitter", il s'agit de la ligne '{LOGOUT_LNK}' => $lang_main_menu['logout_lnk'] . " [" ...

laubert

Je n'ai pas de USERNAME dans theme.php (celui de classic).

Dans include/themes.inc.php, il apparaît une dizaine de fois. Je peux changer tout en utf8_encode(USER_NAME) ?

Titooy

Je pense bien que oui. Il faut voir ce qu'il y a autour. Il doit y en avoir pour la liste des membres, pour les infos d'image, pour les thumbnails, .... Pour éviter du travail inutile, ne le faites que pour les fonctions que vous utilisez.

laubert

Merci Titooy.
Ca fonctionne très bien pour l'affichage à côté de "Quitter".

Par contre il reste toujours avec des "?" dans différents endroits de la galerie, par exemple comme posteur en dessous d'une photo.
Donc le USER_NAME doit être appelé depuis de multiples fichiers...
Autre exemple, les PostCards où (tout le reste est bien corrigé  ;)) la signature est bien entendu avec des "?".

J'ai vu que tu proposes ta solution sur le forum anglais...
... les créateurs de CPG n'ont pas trouvé mieux.

Titooy

il faudrait peut-être voir alors du côté de bridge/idb_base.inc.php (en annulant alors les modifications faites dans theme.inc.php)

define('USER_NAME', addslashes($USER_DATA['user_name']));
define('USER_NAME', utf8_encode(addslashes($USER_DATA['user_name'])));

et/ou

$USER_DATA['user_name'] = $row['username'];
$USER_DATA['user_name'] = utf8_encode($row['username']);

Je n'ai pas essayé donc ce sont juste des pistes...

laubert

Je viens de tester en local (easyphp 1.8) les manips que tu proposes sur udf_base.inc.php.

La 1ère (define('USER_NAME'...) corrige bien le nom en haut à droite après Quitter, mais pas dans les pages sous les vignettes etc.

Surprise, avec la 2ème modif ($USER_DATA[...), le nom en haut à droite se remet à déconner (alors que la 1ère modif est toujours là bien sûr). Les autres sont toujours zarbi aussi.
Il y a quand même une évolution avec la 2ème modif, au lieu d'avoir des ? à la place des é, j'ai droit à des à :D.

En tous cas, merci d'avoir cherché.


(sinon, il y a aussi peu de monde avec des noms d'utilisateurs à caractères accentués bridgés depuis phpBB ?)

Titooy

dans le fichier include/functions.php remplacez $row['owner_name'] par utf8_encode($row['owner_name'])

Cette fois, ça devrait être bon...

laubert

Hmm
Je commence à m'y perdre  :D

Alors avec la nouvelle modif, ça brouille un peu les cartes, en haut à droite, ça disparaît. Par contre, un nouvel upload donne un nom correct.
Chose curieuse, les photos précédentes gardent ou pas l'ancien nom vérolé ???.

La nouvelle photo uploadée semble correcte, mais par exemple à l'endroit où il est indiqué nom de l'album dans le détail d'info, il y a un ancien nom vérolé...

Je vais refaire un nouvel essai sur 2 bases vierges pour être sûr.
En faisant :
- les 2 modifs de udb_base.inc.php
- la modif de functions.inc.php

Titooy

A mon avis, il ne faut faire qu'une des deux dans udb_base car sinon elles s'additionnent.

laubert


Titooy

C'est qu'il me fait travailler en plus ! :D

Après une analyse plus poussée, voici les corrections à appliquer :

udb_base.inc.php

dans la fonction load_user_data()
remplacez
$USER_DATA['user_name'] = $row['username'];

par
$USER_DATA['user_name'] = utf8_encode($row['username']);

(corrige le nom à côté de Quitter)

dans la fonction get_user_infos()
après
$user_data['group_name'] = '';

ajoutez
$user_data['user_name'] = utf8_encode($user_data['user_name']);

(corrige ecard.php, profile.php et report_file.php)

dans la fonction get_user_name()
remplacez
return $row['user_name'];

par
return utf8_encode($row['user_name']);

(concerne editpics.php, modifyalb.php et functions.inc.php)

dans la fonction list_users_query(&$user_count)
avant
$users[] = $row;

ajoutez
$row['user_name'] = utf8_encode($row['user_name']);


remplacez
$users[] = array_merge($row, array('user_name' => $userdata[$row['user_id']]));

par
$users[] = array_merge($row, array('user_name' => utf8_encode($userdata[$row['user_id']])));


(corrige l'affichage des galeries perso - index.php?cat=1)

Il y a encore d'autres choses à corriger dans la partie admin mais je crois que j'ai à peu près tout ce qui concerne le côté utilisateurs... et puis il est 3h du mat' et j'ai envie d'aller dormir  :P

Edit: étant donné ce que je signale dans le message suivant, j'ai supprimé les modifs à faire dans functions.inc.php

Titooy

Voilà, la nuit porte conseil ;)

En fait les modifications dans functions.inc.php ne devraient pas être appliquées car elles concernent des données qui se trouvent dans la table pictures et non dans users. Et une fois que celles de udb_base.inc.php sont faites, il y aura une double conversion pour les nouvelles images.

Il y a donc plusieurs cas de figure:
- Il s'agit d'une mise à jour : si c'est la mise à jour normale, les tables de Coppermine sont converties en utf-8, y compris le nom de l'uploader. Pas de problèmes donc.
- S'il s'agit d'une nouvelle galerie, pas de problème non plus.
- Un peu de travail supplémentaire devra être fourni si la galerie a été créée avec le bridge et que des images ont déjà été ajoutées. Il faut alors modifier les champs owner_name dans la base de données (ce qui peut poser des problèmes avec certains caractères)

laubert

Quote from: Titooy on December 15, 2005, 03:13:14 AM
C'est qu'il me fait travailler en plus ! :D
:D Normal, tu as l'air d'être l'unique spécialiste mondial des caractères accentués  :D

Quote- S'il s'agit d'une nouvelle galerie, pas de problème non plus.
Les tests que je faisais l'étaient sur 2 bases vierges (phpBB et CPG). De toutes façons je teste à nouveau ce soir sur du tout propre tout neuf.

En tous cas merci pour tes recherches.


2 trucs étranges :
- les créateurs ne répondent pas à ton message sur ce problème... Dépassés par les accents ?
- je suis le seul à avoir des problèmes de noms de membres à caractères accentuées dans phpBB !

Titooy

Quote from: laubert on December 15, 2005, 01:25:01 PM2 trucs étranges :
- les créateurs ne répondent pas à ton message sur ce problème... Dépassés par les accents ?
- je suis le seul à avoir des problèmes de noms de membres à caractères accentuées dans phpBB !
Apparemment, le problème ne doit pas être courant... ce qui explique le peu d'empressement des développeurs...
Mais je suis quand-même étonné qu'il n'y ait pas plus de réaction du coté des alphabets non-latins... je suppose que le problème doit être flagrant pour les galeries chinoises, arabes, russes, etc. D'autant plus que ce n'est pas spécifique à phpBB vu que je fais mes tests avec SMF...


Une dernière modif pour corriger l'affichage de la liste déroulante des albums sur la page modifyalb.php

udb_base.inc.php
remplacez
$sql = "SELECT aid, CONCAT('(', {$this->field['username']}, ') ', title) AS title

par
$sql = "SELECT aid, {$this->field['username']} AS user_name, a.title AS title


modifyalb.php
remplacez
while ($row = mysql_fetch_array($result)) $rowset[] = $row;

par
while ($row = mysql_fetch_array($result)) {
   $row['title'] = "(".utf8_encode($row['user_name']).") ".$row['title'];
   $rowset[] = $row;
}


the worms

salouté, et bien pour moi rien ne fonctionne :( , même avec la conversion ça me marque impossible de convertir !

Or cette conversion met utile vu que des membres en sont contraint ! (il ne peuvent s'inscrirent)

j'vous remerci d'avance et bon reveillon ;)

the worms