cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 5 déc. 2011 à 17:43
@lefauve42: Ce sont de très bonnes remarques. Néanmoins, je parlais d'un usage assez particulier. Généralement, je convertis mes caractères spéciaux en HTML quasi immédiatement, et si l'encodage change plus tard, vu que j'ai déjà tout en code html, je ne me pose plus la question.
Il existe bien entendu toujours le risque de transformer le fichier en prenant une version dont l'encodage a changé, auquel cas, il y aura effectivement un souci.
Ma méthode n'est pas infaillible à 100% (à moins de toujours utiliser le code html, mais donc plus besoin de convertisseur) et ta remarque reste très pertinente.
>> Moralite : quelle que soit la methode choisie, ca ne dispense pas de verifier la configuration du serveur et le format d'encodage de vos fichiers :o)
Tout à fait ! C'est une très bonne conclusion :)
LeFauve42
Messages postés239Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention20 avril 2009 5 déc. 2011 à 17:18
CptPingu: Je suis d'accord avec toi sur le principe, mais dans la pratique :
- Si la configuration de l'encoding de la page change de maniere involontaire, ne vaut-il pas mieux s'en apercevoir rapidement (en constatant des caracteres bizares sur l'affichage) qu'attendre que la base de donnee du site soit corrompue avec des enregistrement encodes selon le mauvais format ?
- Si l'encodage du fichier change, je ne suis pas sur que le programme de PGL10 va reconnaitre les caracteres speciaux (ni d'ailleurs une solution en awk ou sed).
Moralite : quelle que soit la methode choisie, ca ne dispense pas de verifier la configuration du serveur et le format d'encodage de vos fichiers :o)
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 5 déc. 2011 à 16:57
@rojbisami: Écrire le code HTML permet de ne pas se soucier de ce genre de problème. Je rapelle que mettre ce header ne résoud pas tous les problèmes. Si tu as enregistré ton fichier dans un encodage X et que tu mets en entête un encodage Y, tu vas avoir pas mal de soucis (et ça arrive souvent de manière involontaire. essaie de différencier à l'oeil nu un fichier en UTF-8 avec et sans bom, ou même un fichier en UTF-8 et en UTF-16...). C'est à mon humble avis une technique très appréciable. pgl10 ne savait pas qu'il existait des outils qui le faisait, mais ça démarche est tout à fait légitime (et si je ne connaissais pas awk ou sed, j'aurais sûrement eu l'usage de son programme).
LeFauve42
Messages postés239Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention20 avril 2009 30 nov. 2011 à 17:14
> Au lieu de remplacer ces caractères spéciaux, vous pouvez ajouter dans la
> partie <head> de votre page, la ligne suivante:
C'est ce dont je parlais dans mon premier post :o).
J'ajouterais deux remarques sur cette methode :
- Si vous avez le choix, utilisez plutot UTF-8 comme encodage plutot que le vieillissant iso-latin-1
- Notez que ce meta tag n'est pas prioritaire pour le navigateur. Si par hasard votre hebergeur a configure son serveur pour retourner un entete HTTP "Content-Type" avec un encodage different du votre, c'est celui-ci qui sera utilise pour decoder les caracteres de la page. (donc, si vous sauvez votre fichier avec le bon encodage (celui correspondant au meta-tag) et que ca ne marche pas, verifiez les headers HTTP renvoyes par le serveur) :o)
rojbisami
Messages postés6Date d'inscriptiondimanche 26 avril 2009StatutMembreDernière intervention18 avril 2010 30 nov. 2011 à 16:27
Au lieu de remplacer ces caractères spéciaux, vous pouvez ajouter dans la partie <head> de votre page, la ligne suivante:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
qui indique le système de codage de caractères à utiliser, ici Français latin.
Vous pouvez également utiliser l'unicode. Encore plus intéressant dans le cas d'utilisation de plusieurs langues.
Amicalement
Kmaschta
Messages postés1Date d'inscriptionlundi 9 janvier 2012StatutMembreDernière intervention10 janvier 2012 28 nov. 2011 à 15:48
Petite précision, pour éviter de mettre "std::", suffit de préciser "using namespace std;" après les inclusions.
pgl10
Messages postés380Date d'inscriptionsamedi 18 décembre 2004StatutMembreDernière intervention29 octobre 202311 28 nov. 2011 à 15:48
LeFauve42 : merci pour ces explications bien claires sur AWK. Il y a tellement d'outils à connaître : C, C++, STL, Qt, OpenGL, et beaucoup d'autres ... ! On ne sait plus ceux qu'il faut apprendre. Mais là, AWK est une remarque très appropriée. Je suis content que mon programme a permis ce rappel. Remerciements.
LeFauve42
Messages postés239Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention20 avril 2009 28 nov. 2011 à 14:45
AWK est un outil destine a ecrire rapidement des scripts prenant des fichiers texte en entree et generant des fichiers textes modifies en sortie.
C'est le cas le plus general, mais on peut faire beaucoup plus (certains ont par exemple ecrit des compilateurs en AWK).
Il a ete cree en 1977, donc ce n'est pas nouveau mais ca fonctionne toujours et ca reste le moyen le plus rapide de faire des choses simples avec des fichiers.
Si tu veux tester, je te recommande la version de GNU (gawk.exe) qui comporte quelques ameliorations en plus. Google te permettra de trouver la doc en ligne, ainsi que des exemples de code.
Les principaux avantages sont :
- Pas la peine de gerer les ouvertures/fermetures de fichier
- Support natif des expressions regulieres
- Une syntaxe tres proche du C
pgl10
Messages postés380Date d'inscriptionsamedi 18 décembre 2004StatutMembreDernière intervention29 octobre 202311 28 nov. 2011 à 13:20
@Jojo Lancien : merci pour ce commentaire. C'est bien vrai que maîtriser complètement tout traitement automatique est toujours quelquechose de très satisfaisant.
@LeFauve42 : cette information m'intrigue. Pour ceux, comme moi, qui ne connaissent pas cette solution en awk il serait intéressant d'avoir ici un peu plus d'informations au sujet de cet outil dédié.
LeFauve42
Messages postés239Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention20 avril 2009 28 nov. 2011 à 11:34
...Ou alors il suffit de spécifier dans l'entête du fichier le type d'encodage utilisé...
Sinon pour ce genre de programmes, pourquoi utiliser quelque chose comme C++ alors que des outils dédiés comme awk font ça très bien en quelques lignes ?
Jojo Lancien
Messages postés6Date d'inscriptionvendredi 8 juin 2012StatutMembreDernière intervention 8 juin 2012 28 nov. 2011 à 08:50
J'avais toujours eu la flemme de mettre en correspondance les caractères spéciaux avec leur code HTML.
Ce petit utilitaire me parait une bonne idée. Je vais le tester (avec ou sans la simplification de PGL10) et je rependrai peut-être la séquence dans d'autres utilitaires de génération d'HTML.
pgl10
Messages postés380Date d'inscriptionsamedi 18 décembre 2004StatutMembreDernière intervention29 octobre 202311 27 nov. 2011 à 21:55
5 déc. 2011 à 17:43
Il existe bien entendu toujours le risque de transformer le fichier en prenant une version dont l'encodage a changé, auquel cas, il y aura effectivement un souci.
Ma méthode n'est pas infaillible à 100% (à moins de toujours utiliser le code html, mais donc plus besoin de convertisseur) et ta remarque reste très pertinente.
>> Moralite : quelle que soit la methode choisie, ca ne dispense pas de verifier la configuration du serveur et le format d'encodage de vos fichiers :o)
Tout à fait ! C'est une très bonne conclusion :)
5 déc. 2011 à 17:18
- Si la configuration de l'encoding de la page change de maniere involontaire, ne vaut-il pas mieux s'en apercevoir rapidement (en constatant des caracteres bizares sur l'affichage) qu'attendre que la base de donnee du site soit corrompue avec des enregistrement encodes selon le mauvais format ?
- Si l'encodage du fichier change, je ne suis pas sur que le programme de PGL10 va reconnaitre les caracteres speciaux (ni d'ailleurs une solution en awk ou sed).
Moralite : quelle que soit la methode choisie, ca ne dispense pas de verifier la configuration du serveur et le format d'encodage de vos fichiers :o)
5 déc. 2011 à 16:57
@Kmaschta: Heu... Juste non ? On évite de mettre des using namespace, voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
30 nov. 2011 à 17:14
> partie <head> de votre page, la ligne suivante:
C'est ce dont je parlais dans mon premier post :o).
J'ajouterais deux remarques sur cette methode :
- Si vous avez le choix, utilisez plutot UTF-8 comme encodage plutot que le vieillissant iso-latin-1
- Notez que ce meta tag n'est pas prioritaire pour le navigateur. Si par hasard votre hebergeur a configure son serveur pour retourner un entete HTTP "Content-Type" avec un encodage different du votre, c'est celui-ci qui sera utilise pour decoder les caracteres de la page. (donc, si vous sauvez votre fichier avec le bon encodage (celui correspondant au meta-tag) et que ca ne marche pas, verifiez les headers HTTP renvoyes par le serveur) :o)
30 nov. 2011 à 16:27
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
qui indique le système de codage de caractères à utiliser, ici Français latin.
Vous pouvez également utiliser l'unicode. Encore plus intéressant dans le cas d'utilisation de plusieurs langues.
Amicalement
28 nov. 2011 à 15:48
28 nov. 2011 à 15:48
28 nov. 2011 à 14:45
C'est le cas le plus general, mais on peut faire beaucoup plus (certains ont par exemple ecrit des compilateurs en AWK).
Il a ete cree en 1977, donc ce n'est pas nouveau mais ca fonctionne toujours et ca reste le moyen le plus rapide de faire des choses simples avec des fichiers.
Si tu veux tester, je te recommande la version de GNU (gawk.exe) qui comporte quelques ameliorations en plus. Google te permettra de trouver la doc en ligne, ainsi que des exemples de code.
Les principaux avantages sont :
- Pas la peine de gerer les ouvertures/fermetures de fichier
- Support natif des expressions regulieres
- Une syntaxe tres proche du C
28 nov. 2011 à 13:20
@LeFauve42 : cette information m'intrigue. Pour ceux, comme moi, qui ne connaissent pas cette solution en awk il serait intéressant d'avoir ici un peu plus d'informations au sujet de cet outil dédié.
28 nov. 2011 à 11:34
Sinon pour ce genre de programmes, pourquoi utiliser quelque chose comme C++ alors que des outils dédiés comme awk font ça très bien en quelques lignes ?
28 nov. 2011 à 08:50
Ce petit utilitaire me parait une bonne idée. Je vais le tester (avec ou sans la simplification de PGL10) et je rependrai peut-être la séquence dans d'autres utilitaires de génération d'HTML.
27 nov. 2011 à 21:55
char ch[26] = {'€','œ','©','°','Ç', ... 'û','ü'};
std::string st[26] = {"&euroc;","œ","©","°","Ç", ... ,"û","ü"};
for(int k=0; k<26; k++) {i1=li.find(ch[k]); if(i1!=i0) {li.replace(i1,1,st[k]); ok=false;} }