On peut créer ou modifier le fichier html d'une page web avec le Bloc-note, Wordpad ou un autre traitement de texte. Cela ne pose plus de problème pour les visiteurs français. Mais pour être vu, avec un affichage correct, quand on utilise Internet Explorer ou un autre afficheur en version américaine ou d'un autre pays étranger il faut convertir les caractères spéciaux. Ceci est fastidieux avec un traitement de texte. Convhtml effectue automatiquement les conversions de 26 caractères spéciaux pour tous les fichiers html contenus dans le dossier où on en met une copie. Ainsi, on maitrise bien les conversions faites. Il est rapide et systématique.
Source / Exemple :
#include <ctime>
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
#include <windows.h>
int main() {
WIN32_FIND_DATA File;
HANDLE hSearch;
std::cout << std::endl;
hSearch=FindFirstFile("*.*", &File); // début de la recherche de fichiers
if(hSearch == INVALID_HANDLE_VALUE) {
std::cout << "Il n'y a aucun fichier !" << std::endl << std::endl; // ??
system("pause");
return -1;
}
do { // pour chaque fichier du dossier courant
char buf[133], *p;
BOOL ok;
int nc;
strcpy(buf, File.cFileName);
nc = strlen(buf);
while((p=strchr(buf, '.')) != NULL) strcpy(buf, p+1); // buf : type du fichier
ok=false;
if(strcmp(buf, "htm") ==0) {ok=true; nc=nc-4;}
if(strcmp(buf, "html")==0) {ok=true; nc=nc-5;}
if(ok && nc > 0) {
std::cout << "Traitement de : " << File.cFileName << std::endl;
std::ifstream input(File.cFileName); // traitement de ce fichier
if(input) {
std::string fichout;
std::ostringstream tmpflx;
tmpflx << File.cFileName << "_tmp" << time(0); // fichier temporaire
fichout = tmpflx.str(); // à nom unique
std::ofstream output(fichout.c_str());
if(output) {
std::string::size_type i0, i1;
std::string li; // li : ligne lue puis ligne traitée
while(std::getline(input, li)) { // volontairement on ne convertit
do { // pas les 4 caractères : & " < >
ok=true;
i0=std::string::npos;
i1=li.find(''); if(i1!=i0) {li.replace(i1,1,"&euroc;"); ok=false;}
i1=li.find(''); if(i1!=i0) {li.replace(i1,1,"œ"); ok=false;}
i1=li.find('©'); if(i1!=i0) {li.replace(i1,1,"©"); ok=false;}
i1=li.find('°'); if(i1!=i0) {li.replace(i1,1,"°"); ok=false;}
i1=li.find('Ç'); if(i1!=i0) {li.replace(i1,1,"Ç"); ok=false;}
i1=li.find('È'); if(i1!=i0) {li.replace(i1,1,"È"); ok=false;}
i1=li.find('É'); if(i1!=i0) {li.replace(i1,1,"É"); ok=false;}
i1=li.find('×'); if(i1!=i0) {li.replace(i1,1,"×"); ok=false;}
i1=li.find('à'); if(i1!=i0) {li.replace(i1,1,"à"); ok=false;}
i1=li.find('â'); if(i1!=i0) {li.replace(i1,1,"â"); ok=false;}
i1=li.find('ä'); if(i1!=i0) {li.replace(i1,1,"ä"); ok=false;}
i1=li.find('æ'); if(i1!=i0) {li.replace(i1,1,"æ"); ok=false;}
i1=li.find('ç'); if(i1!=i0) {li.replace(i1,1,"ç"); ok=false;}
i1=li.find('è'); if(i1!=i0) {li.replace(i1,1,"è"); ok=false;}
i1=li.find('é'); if(i1!=i0) {li.replace(i1,1,"é"); ok=false;}
i1=li.find('ê'); if(i1!=i0) {li.replace(i1,1,"ê"); ok=false;}
i1=li.find('ë'); if(i1!=i0) {li.replace(i1,1,"ë"); ok=false;}
i1=li.find('î'); if(i1!=i0) {li.replace(i1,1,"î"); ok=false;}
i1=li.find('ï'); if(i1!=i0) {li.replace(i1,1,"ï"); ok=false;}
i1=li.find('ñ'); if(i1!=i0) {li.replace(i1,1,"ñ"); ok=false;}
i1=li.find('ô'); if(i1!=i0) {li.replace(i1,1,"ô"); ok=false;}
i1=li.find('ö'); if(i1!=i0) {li.replace(i1,1,"ö"); ok=false;}
i1=li.find('÷'); if(i1!=i0) {li.replace(i1,1,"÷"); ok=false;}
i1=li.find('ù'); if(i1!=i0) {li.replace(i1,1,"ù"); ok=false;}
i1=li.find('û'); if(i1!=i0) {li.replace(i1,1,"û"); ok=false;}
i1=li.find('ü'); if(i1!=i0) {li.replace(i1,1,"ü"); ok=false;}
}while(!ok);
output << li + "\n";
}
}
output.close();
input.close();
remove(File.cFileName); // fin du fichier à traiter
rename(fichout.c_str(), File.cFileName); // nouveau fichier traité
}
}
}while(FindNextFile(hSearch, &File));
FindClose(hSearch); // fin de la recherche de fichiers
std::cout << std::endl << std::endl;
std::cout << "C'est fini !";
std::cout << std::endl << std::endl;
system("pause");
return 0;
}
Conclusion :
Pour l'utiliser il suffit de mettre une copie du fichier convhtml.exe dans le dossier à traiter, puis de le lancer et enfin de l'effacer. C'est tout ! Il reste ensuite à envoyer les fichiers chez l'hébergeur.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.