Aller au contenu

Sujets conseillés

Posté

Bonjour,

Voilà j'ai un souci d'accents, mes é apparaissent comme ça é à l'écran, mon site est un moteur de recherche (phpdig) mouveur.com .

La version du script de phpdig que j'utilise ne prend pas en charge l'encodage uft8, l'encodage supporté par ce script php est iso-8859-1, l'interclassement de mes tables sont en latin1_swedish_ci.

le charset par défaut de Ma base de donnée (MySQL: 5.0.45) est UTF-8 Unicode, alors j'ai envoyé cette requête sql: ALTER DATABASE information_schema DEFAULT CHARACTER SET latin1 DEFAULT COLLATE latin1_swedish_ci; et par le message d'erreur de retour "acces denied" j'ai découvert que je n'avais pas les droits nécessaires pour faire ce changement ..

Le moteur enregistre les données dans des fichiers txt, pourtant 75% sont lus correctement.. Le vrai problème est que je suis un vrai débutant (néanmoins passionné), est-ce que quelqu'un connait une parade pour me dépétrer de là?

J'ai bien une version de phdig qui prend en charge l'uft8 , mais un fichier .htacces codé comme ceci:

# start htaccess file

PHP_VALUE default_charset UTF-8

PHP_VALUE mbstring.func_overload 0

PHP_VALUE mbstring.encoding_translation On

# end htaccess file

nécessaire au bon fonctionnment du script me fait renvoyer de mon serveur un message d'erreur et du coup je n'ai plus rien d'autre que ce message d'erreur interne. Bref j'avoue que je deviens fou. Vivement que j'ai les moyens de m'offrir un serveur dédié..

J'ai donc contacté mon hébergeur en lui expliquant le problème et il me répond cela:

vos commande .htaccess sont fausses...

> PHP_VALUE default_charset UTF-8

> PHP_VALUE mbstring.func_overload 0

> PHP_VALUE mbstring.encoding_translation On

si vous utilisez un .htaccess c'est pour modifier la conf apache soit :

default_charset UTF-8

si vous desirez modifier la conf php il faut utiliser un fichier

php.ini

egalement avec les variable directement. (sans PHP_VALUE qui est une

commande qui fonctionne uniquement sur les hebergement non securisé

Alors je me suis empressé de faire ce qu'il m'a précaunisé sur le fichier .htacces mais le résultat est le meme message d'erreur... pour le reste je ne sais meme pas comment procéder pour les fichier php.ini, je ne sais meme pas si ça me serait utile, Du coup j'ai re-installé l'ancienne version du moteur. Ce qui craint vraiment au dela de l'aspect esthétiquement affreux c'est que les 'e' sont déformés et du coup certains mots ne sont pas recherché par le moteur, je ne parle que de la lettre 'e' puisque la recherche du moteur est insensible aux accents.

ça fait une semaine que je rame avec cette histoire, alors si quelqu'un pouvait m'éclairer de ses lumières..

Jean.

Posté

Trop fort,

Je viens d'être confronter au meme problème et après quelque recherche en m'aidant des premières indications que tu as fournis, j'ai trouvé des réponses.

Vu ta participation aussi involontaire qu'elle soit à l'aboutissement de mes recherches, je me devais de porter a ta connaissance le fruit de mes recherches.

[ J'ai quand meme du m'inscrire a ce forum et ct tout un art pour valider son compte - c'est mon premier message ici]

Donc voila.

Première étape le fichier http.conf :

Modifier la section qui suit avec ce qu'il y a en gras.

Si tu as des alias et que tu veux atteindre uniquement l'un de ces derniers, reporte toi a a la rubrique directory qui le concerne. elle devrait se situer a la suite de celle ci.

<Directory />

Options FollowSymLinks Indexes

AllowOverride FileInfo AuthConfig

</Directory>

Ensuite ton fichier .htaccess

la bonne syntaxe pour la modification du paramètres de configuration de php est AddDefaultCharset.

Ainsi ajoute cette ligne :

AddDefaultCharset Utf-8

Rafraichis la page qui affiche ton erreur et ça devrait aller.

Je tiens tout de même à ce que tu ailles faire un tour sur le site suivant qui a été la clé du succès:

Tutoriel fichier HTTACCESS - en anglais

Toutes les commandes disponibles pour un fichier .htaccess y sont répertorier et les paramètres à changer si nécessaire y sont indiqués.

Bonne chance!

**EDIT Administrateur (TheRec)** Inutile de citer le message précédent en entier lorsqu'il figure juste au-dessus. J'ai édité votre message dans ce sens. Merci de votre compréhension.

Posté

Merci beaucoup pour ta réponse ;o)

Mon problème reste entier et mes é apparaissent toujours comme ça: manufacturés.

J'ai pris le parti d'abandonner la version de phpdig qui prend en compte l'uft8, car elle a de serieux bug, donc de ce côté c'est réglé.

Parcontre, ma version de phpdig 1.8.8 fonctionne à merveille, évidemment sauf en ce qui concerne l'encondage qui ne correspond pas à celui par défaut de ma base qui est en uft8 unicode, et c'est un problème majeur, car le moteur ne va pas chercher certain mots déformés. Exemple, dans mon moteur mouveur si on cherche persepolis, il ne trouvera donc pas les bons liens...

J'ai bien pensé trouver un logiciel pour re-encoder (lequel? ça existe?) mais le souci est que les fichiers textes pour 75/80% sont correctes et n'ont pas de problemes de caracteres spéciaux et pourtant s'affichent mal à l'ecran, de plus j'en ai plusieurs milliers...

Au cas ou quelqu'un trouverai une idée... Voici la partie du code qui nous interesse et qui se trouve dans mon fichier config.php, je vais surement dire une connerie, mais si comme dans ce code, je trouve le moyen d'ajouter les lignes $phpdig_string_subst et $phpdig_words_chars qui correspondent à uft8, vous pensez que c'est possible? Comment faire?

define('PHPDIG_ENCODING','iso-8859-1'); // encoding for interface, search and indexing.

// iso-8859-1, iso-8859-2, iso-8859-7, tis-620,

// and windows-1251 supported in this version.

// replace/edit phpdig_string_subst/phpdig_words_chars for encodings as needed

// note: you may need to alter table keywords modify keyword varchar(64) binary; for certain encodings

$phpdig_string_subst['iso-8859-1'] = 'A:ÀÁÂÃÄÅ,a:àáâãäå,O:ÒÓÔÕÖØ,o:òóôõöø,E:ÈÉÊË,e:èéêë,C:Ç,c:ç,I:ÌÍÎÏ,i:ìíîï,U:ÙÚ

ÛÜ,u:ùúûü,Y:Ý,y:ÿý,N:Ñ,n:ñ';

$phpdig_string_subst['iso-8859-2'] = 'A:ÁÂÄá,C:ÇÆÈ,D:ÏÐ,E:ÉËÊÌ,I:ÍÎ,L:Å¥£,N:ÑÒ,O:ÓÔÖÕ,R:ÀØ,S:Šª©,T:Þ«,U:ÚÜÙÛ,Y:Ý,

Z:¬¯®,a:áâäã±,c:çæè,d:ïð,e:éëêì,i:íî,l:åµ³,n:ñò,o:óôöõ,r:àø,s:¶º¹,t:þ»,u:úüùû,y:ý

,z:Œ¿Ÿ';

$phpdig_string_subst['iso-8859-6'] = 'Q:Q,q:q';

$phpdig_string_subst['iso-8859-7'] = 'á:Á¶Ü,â:Â,ã:Ã,ä:Ä,å:ÅžÝ,æ:Æ,ç:Þǹ,è:è,é:ßúɺ,ê:Ê,ë:Ë,ì:Ì,í:Í,î:Î,ï:üŒÏ,ð:Ð,ñ

:Ñ,ó:Óò,ô:Ô,õ:ýûÕŸ,ö:Ö,÷:×,ø:Ø,ù:þÙ¿';

$phpdig_string_subst['tis-620'] = 'Q:Q,q:q';

$phpdig_string_subst['windows-1251'] = 'à:À,á:Á,â:Â,ã:Ã,ä:Ä,å:Å,æ:Æ,ç:Ç,è:È,é:É,ê:Ê,ë:Ë,ì:Ì,í:Í,î:Î,ï:Ï,ð:Ð,ñ:Ñ,ò:Ò,

ó:Ó,ô:Ô,õ:Õ,ö:Ö,÷:×,ø:Ø,ù:Ù,ú:Ú,û:Û,ü:Ü,ý:Ý,þ:Þ,ÿ:ß';

$phpdig_words_chars['iso-8859-1'] = '[:alnum:]ðþßµ';

$phpdig_words_chars['iso-8859-2'] = '[:alnum:]ðþßµ';

$phpdig_words_chars['iso-8859-6'] = '[:alnum:]€¬»¿ÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚàáâãäåæçèéêëìíîïðñò';

$phpdig_words_chars['iso-8859-7'] = '[:alnum:]ÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÓÔÕÖ×ØÙ¢ž¹ºŒŸ¿ÚÛáâãäåæçèéêëìíîïðñóôõö÷øùÜÝÞßüýþúûÀ

à';

$phpdig_words_chars['tis-620'] = '[:alnum:]¡¢£€¥Š§š©ª«¬_®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÜßàáâãäåæ

çèéêëìíîïðñòóôõö÷øùúû';

$phpdig_words_chars['windows-1251'] = '[:alnum:]ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ';

puis vers la fin du script ceci

// parse encodings (create global $phpdigEncode);

phpdigCreateSubstArrays($phpdig_string_subst);

// send encoding if needed

if (!headers_sent()) {

header('Content-type:text/html; Charset='.PHPDIG_ENCODING);

}

Help me please

J.

Posté

Bonjour,

C'est peut être ta page html qui ne renvoie pas le bon charset, et non le code php.

Si ta page est en ligne, tu peux nous donner le lien, stp ?

Sinon, est ce que tu peux nous passer les premières lignes (<head>) de ton code html, stp ?

Merci,

Nicolas.

Posté

<html>

<head>

<title>Mouveur, métiers du cinéma</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<meta http-equiv="Content-Language" content="fr">

<meta name="author" content="mouveur">

<meta name="description" content="moteur de recherche du cinéma et des métiers du cinéma">

mon site

Merci de regarder :unsure:

Posté

Non c'est toujours autant pourri :unsure: les é sont comme ça: manufacturés et les ç sont comme ça: français ...

Faudrait que je trouve un code qui s'intègre au script bien spécifique de phpdig et qui m'enlève tout les accents, j'ai bien trouvé un code en fouillant dans le forum:

function enleve_accent($chaine){

return strtr($chaine, "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");

}

Je ne sais pas s'il fonctionne mais j'ai bien essayé de l'inserer un peu partout mais sans résultat...

Posté

Attends, enlèves pas les accents, ca vient d'autre chose ! :D

Bon, dans ta config. de phpdig, tu veux tout passer en utf8, ok.

Pour autant, dans ton <head>, tu déclares du iso >

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Changes en utf8, pour voir. :)

Hey je viens de m'appercevoir que ce code venait de toi whistling.gif

Oui, ca m'arrive de temps en temps :D

[rendons à Cesar]En fait, non, il ne vient pas de moi, mais.. je l'aime bien, alors j'le poste souvent ;) Par contre, je me rappelle plus à qui il appartient :( [/rendons à cesar]

Posté

J'ai essayé, ça n'a pas d'effet :(

Non je n'ai pas vraiment le choix, j'ai bien une version de phpdig qui gere l'uft8 mais malheureusement elle ne fonctionne pas, j'ai donc installé une version antérieur de phpdig qui fonctionne vraiment super bien, parcontre comme cette version supporte uniquement l'iso-8859-1 j'ai des soucis d'encodage ou de décodage d'ailleurs, je ne sais pas très bien.

Le fait est que je n'ai pas les droit suffisants pour changer le charset par defaut de ma base qui est en uft8_unicode, sinon j'aurai tout mis en latin1.

Alors comme je n'ai pas les moyens de me payer un hébergement digne de ce nom pour le moment, il faut que je trouve une parade à mes soucis d'accents et de cédilles.

Je pense qu'enlever tous les accents serait peut etre une bonne solution, que me conseilles tu? Peut etre aussi en essayant d'autres interclassement sur mes tables ? pour le moment elles sont en latin1_swedish_ci..

Pour résumer; phpdig encode et decode dans tous les fichiers du script en iso-8859-1 et envoie le tout à ma base qui est réglé en uft8, pour arriver à mes tables qui sont réglée en interclasement latin1_swedish_ci, bref c'est le gros bordel, ça me rend dingue...

Posté

A ta place ? Je viderais les tables, et je recommencerais l'indexation :)

Si tu commences à trifouiller tes tables, sans trop savoir c'que tu fais, tu risques de faire plus de mal que de bien :)

Sinon, tu as la possibilité de modifier le code, mais aux prochaines indexations, tu auras le problème inverse, avec un 'code' qui ne correspondra plus aux différentes versions.

Si tu maitrises pas, réindexes, tu vas gagner du temps ;)

( eventuellement avec 2 bases : L'une en attente, celle que tu as, pendant que l'autre indexe, petit à petit :) )

Nico.

Posté

bon bha ça n'a servi à rien :nonono: (heureusement que j'ai les sauvegardes de mes données en fichiers sql)

Jai mis ce code dans un fichier .htaccess

AddDefaultCharset iso-8859-1

AddCharset ISO-8859-1 .html

AddCharset ISO-8859-1 .php

mais aucun effet...

Si t'as un code magique, pense à moi :wacko:

Posté

Bon je lâche l'affaire... de toute façon il n'y arien d'illogique vu ma configuration. Je vais donc opter pour de vraies solutions.

Merci pour votre aide :)

J.

Posté

:lol: phpdig est une vraie solution :D

Mais c'est vrai que parfois, il est un peu capricieux :/

Ceci dit, je me permet d'insister : Ta page ne présente pas de défaut d'encodage... (ou alors.. en tapant quel mot ? Moi, j'essaie avec 'cinéma' :)

Es-tu sûr de ce que tu avances ? C'est peut etre la page que tu as copiée, qui a ce problème :D

Nicolas.

Posté

Je suis tout à fait d'accord avec toi, je trouve ce petit moteur vraiment étonnant, de plus maintenant je le connais assez bien et j'ai pu voir combien il pouvait être performant (dans l'avant dernière version car la suivante n'étant pas stable) :cool:

Essaie avec la phrase: la graine et le mulet, moi ici j'obtiens des pages et des pages du genre:

... métrages français La Graine et le mulet Fiche film complÚte Espace Longs Métrages Tous les longs métrages français Ciné-chiffres internationaux et diffusions TV Festivals et Marchés internati... ...onaux Actualités des longs métrages francais La Graine et le mulet 2005 Actualités liées La Graine et La MÎme plébiscitées aux César 23/02/08 La 33e édition des César du cinéma français, q...

Au fond le problème d'affichage c'est chiant mais, ce n'est pas le plus important pour moi, le vrai malaise c'est que le moteur ne va pas chercher les é déformés. (comme tu lementionnes, je sais parcontre que j'ai plein de pages qui sont lues nickel).

Essaie de chercher le mots: persépolis, essaye meme en enlevant les é donc en cherchant; persepolis et bien, il n'affichera pas les résultats pertinents car le moteur aura interprété persépolis et donc les gens ne trouveront pas leur bonheur et penseront que c'est un moteur de m..., donc ça craint au plus haut point.

Evidemment je suis preneur de toutes idées qui te viendraient

Je suis entrain d'envisager de changer de script, ça me fait vraiment rager parce que je connais très bien le fonctionnement de phpdig, et il me convient. Tu connais le moteur elgg?

Posté

Oula elgg c'est trop lourd pour ce que mon hebergeur me donne de droit sur le serveur, ça fonctionne avec un fichier .htaccess de 12mo remplie de codes que mon serveur deteste :( Dommage ça a l'air bien théoriquement parlant.

Il serait temps que je me paie un serveur dédié, mes projets sont importants et je ne peux pas continuer à gratter comme ça...Mais bon en meme temps pour quelques euros par mois j'ai quelques gigas de stockage, un mode safe off sur le serveur et c'est pas si mal que ça..

Posté

Bon alors, en passant les fichiers txt qui correspondent à la description du site en "ansi" ça resoud le problème de la description. Evidemment ça ne regle pas le nouveau souci des 5000 fichiers à corriger environs en estimant que l'autre moitié est bien encodé (je ne sais d'ailleurs par quel hazard). Y a une astuce pour passer 5000 fchiers txt en ansi en 5 minutes?

L'autre problème concerne les firth words (à savoir le titre (hyperlien) dans les resultats de recherche) qui sont eux écrits directement dans la table spider et évidemment encodés en utf8 donc avec des caracteres spéciaux compte tenu que mon script lui envoie en iso-8859-1, et ça, c'est une autre paire de manche , à moins de me taper la correction de milliers de firth words à la main ? Je ne suis pas sortie de l'hauberge...

T'as une idées?

Posté
Essaie de chercher le mots: persépolis, essaye meme en enlevant les é donc en cherchant; persepolis et bien, il n'affichera pas les résultats pertinents car le moteur aura interprété persépolis et donc les gens ne trouveront pas leur bonheur et penseront que c'est un moteur de m..., donc ça craint au plus haut point.

Je confirme, je ne peux pas trouver :lol:

Mouveur est actuellement en maintenance.

Quelques minutes pour 5000 fichiers, oui, c'est jouable sans problèmes, mais ca ne résoudra pas ton problème. Tu ne vas pas faire le 'cherche/remplace' sans arrets, à chaque réindexation :)

Elgg ? >Non, je ne connais pas, par contre si tu as des projets intéressants, c'est vraiment dommage de passer du temps à résoudre des soucis 'mineurs', alors qu'un serveur dédié ne coute actuellement pas grand chose.

De toute facon, pour un 'moteur de recherche', tu auras forcément besoin de 'gros', et crois moi, je suis bien placé pour le savoir, j'ai quelques serveurs saturés à mon actif :lol:

Par contre, il semblerait qu'il y ait méprise : les fichiers txt ne servent pas du tout à l'indexation, ils sont là pour le snippet (les lignes de description du site), et ne servent pas à la recherche. Pour la recherche, il te faut voir la table 'phpdig_keywords'.

Si tu veux que je jettes un oeil à ton script, envoies moi un mp avec les login/pass, et je te regle le pb rapidement :)

Nicolas.

Posté

Les fichiers txt ne servent pas à l'indexation évidemment, tu peux d'ailleurs mettre cette option "fichiers txt" sur off. Parcontre si tu prends l'option, les fichiers txt contribuent largement à la recherche et c'est que je disais.

La table keyword est le dico du moteur, il faut en prendre soin en effet. Le poid de chaque mot en relation avec les urls qui correspondent se fait dans la table 'engine'. Etc... mais tu as l'air de connaître.

Bref, pour mon souci j'ai trouvé une solution rapide:

J'exporte le contenu de ma table 'spider' en sql, je corrige l'encodage avec notepad++ et hop c'est bon, le tout prend 5 min! Héhé qui c'est le plus beau ? hm ? :cool:

Merci pour ton soutien.

J.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...