IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Conversion string en UTF-8


Sujet :

C++

  1. #41
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Ne marche que sous Linux, car sous Windows ne convertit pas en UTF-8 comme je le voudrais

  2. #42
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Arf, ça donne quoi sous Windows ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #43
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Pour moi ça code en ANSI, mais j'ai des accents tout bien mais ce n'est pas de l'UTF-8 or pour mon appli l'encodage de référence est l'UTF-8 Mais au moins maintenant je n'ai plus besoin de forcer l'encodage de mon fichier XML en UTF-8, je peux le mettre en ce que je veux, car je transforme toutes les chaîne en UTF-8 dans le code

    Donc ce n'est pas trop grave en tout cas j'ai noté la méthode le jour ou je voudrais faire une appli avec des soucis d'encodage exclusivement sous Linux

  4. #44
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    mais pour transformer une chaine en UTF-8 il faut savoir l'encodage de ton fichier non? sinon Qt ne va pas non plus reussir, il prend par default l'encodage de l'OS. A noter que QApplication est absolument necessaire ici car sinon la conversion n'est pas correcte.

  5. #45
    screetch
    Invité(e)
    Par défaut
    Sous windows, ca ne marche pas sauf si on mets:
    avant.

    Ensuite:
    marche (l_loc.name() == "C"), la conversion est correcte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::locale l_loc("Swedish_Sweden.1252");
    marche, mais seulement sous visual studio, sous gcc cette locale n'existe pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::locale l_loc("Thai_Thailand.874");
    marche, mais la conversion est incorrecte (
    test des caractères suédois: åöä
    test des caract?res su?dois: ???
    )

  6. #46
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Et personne ne tente UTF8CPP? Juste pour voir? Parceque je vois pas en quoi ça résouds pas le problème...

  7. #47
    screetch
    Invité(e)
    Par défaut
    a part manipuler les chaines UTF8, est ce que UTF8CPP peut traduire d'une chaîne ASCII d'encodage courant vers UTF-8? je n'ai pas vu ca.
    Car c'est bien la le problème: comment passer de l'encodage courant (qui peut etre UTF-8, suédois, thailandais, etc etc) a un encodage unicode. Passé ce point, UTF8CPP ou n'importe quelle bibliothèque Unicode est parfaite.
    C'est d'ailleurs a ce moment que Qt est devenu interessant.

  8. #48
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    ce que je ne comprends pas, c'est qu'on veut transformer de l'XML en UTF-8
    la solution trouvé est Qt, pas iconv car il faut specifier l'encodage source.

    ce que je ne comprends pas, c'est que Qt fait la meme chose, sauf qu'il prend par default l'encoding par default du system. Est-ce voulu comme ca?
    Ca ne me semble pas consistent comme solution.

  9. #49
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    UTF8CPP ne me convient pas du tout car elle ne permet pas de convertir une chaîne encodé dans n'importe quel encodage en UTF-8.

    Ensuite epsilon j'ai l'impression que tu n'as pas bien compris quel était mon but, regarde mon premier post je pense qu'une fois que tu l'auras lu tu comprendras mieux

  10. #50
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    oui tu as raison, j'avais mal compris.

    cependant, en fouillant dans la doc de ICONV, en passant "" dans "from_locale",
    tu obtiens la locale courante.

  11. #51
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    En faisant une recherche sur la conversion ASCII => UTF-8, je suis tombé sur le blog d'Emmanuel Deloget qui définit la fonction suivate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    std::wstring s2w( const std::string & s, const std::locale & loc = std::locale())
    {
    	typedef std::codecvt <wchar_t, char, std::mbstate_t> facet_type;
    	typedef facet_type::result result_type;
     
    	std::mbstate_t state = std::mbstate_t();
    	result_type result;
    	std::vector <wchar_t> buffer( s.size());
    	const char * end_in_ptr = NULL;
    	wchar_t * end_out_ptr = NULL;
     
    	result = std::use_facet<facet_type>( loc).in(
    		state, s.data(), s.data() + s.length(), end_in_ptr,
    		& buffer.front(), & buffer.front() + buffer.size(), end_out_ptr
    	);
     
    	return std::wstring( & buffer.front(), end_out_ptr);
    }
    ça utilise la facette codecvt, qui permet normalement une meilleure conversion que ctype (celle que j'utilisais). Par contre il faut définir une locale en début de programme.

    Voilà le lien vers la page du blog : http://blog.emmanueldeloget.com/inde...ationalisation

    Par contre, au niveau de l'écriture dans un fichier en UTF-8, tu utilises std::ofstream ou FILE ? Parce qu'avec FILE, pour écrire en UTF-8 il faut ouvrir ton fichier avec comme mode "w, ccs=UTF-8".
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  12. #52
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Très intéressant cette fonction mais malheureusement marche pas avec visual studio mais juste avec MinGW (GCC)

    Ce qui est d'ailleurs bien expliqué dans l'article :

    les conversions qui sont effectuées sont limitées par les outils installés sur le système d'exécution (c'est à dire par les locales connues). Selon l'OS, le compilateur, etc. , le nombre de locale connues peut être relativement réduit, ce qui risque de poser des problèmes de conversion dans certains cas.
    Donc vue que la solution ne marche pas avec tout (donc pas portable) elle ne me convient pas pour ce que j'ai à faire.

    Mais je la garde dans un coin de toute façon merci

  13. #53
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Euh ... Tu as quelle version de Visual Studio ? Parce que chez moi ça semble aller. Qu'entends-tu par 'ne marche pas' ? Ne compile pas ou ne fait pas la conversion correctement ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  14. #54
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    2010, et mon éditeur de texte me dit que ce n'est pas de l'utf-8 qui est écrit dedans.

  15. #55
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Citation Envoyé par snake264 Voir le message
    Donc vue que la solution ne marche pas avec tout (donc pas portable) elle ne me convient pas pour ce que j'ai à faire.
    Tu sais le pur portable, ça n'existe pas trop... les outils modernes de compilation permettent de facilement faire de petites adaptations en fonction du compilateur. Quand tu veux faire du multi-plateforme, il est rare d'y couper.

    Typiquement, ça pourrait fonctionner dans Visual avec le bon nom de locale. Il suffirait de faire faire par les outils un #define qui choisi la bonne.

    Entre utiliser Qt et faire un petit tout de passe-passe qui choisi la bonne locale en fonction du compilateur, je préfère personnellement cette deuxième solution...

  16. #56
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Je sais que ça n'existe pas trop c'est pour cette raison que je prend la solution qui s'en rapproche le plus car au moins je suis sur que peut importe l'OS le comportement sera le même.

  17. #57
    Invité de passage
    Inscrit en
    Février 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 1
    Par défaut rasta
    Citation Envoyé par snake264 Voir le message
    Je sais que ça n'existe pas trop c'est pour cette raison que je prend la solution qui s'en rapproche le plus car au moins je suis sur que peut importe l'OS le comportement sera le même.
    Salut tt le monde!!
    Je travail sur un projet qui permet coder le contenu d'un fichier vers UTF8 et vice versa
    je suis débutant en programmation C/C++ et j'ai un rendu pour demain .
    Est ce que vous pouvez me filez un exemple de codeur.?
    je vous remercie d'avance ....

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. [Encodage utf-8]conversion d'un String en utf-8
    Par noOneIsInnocent dans le forum Langage
    Réponses: 4
    Dernier message: 11/01/2007, 15h19
  2. [Conversion] String en InputStream
    Par canou94 dans le forum Langage
    Réponses: 5
    Dernier message: 22/02/2005, 15h04
  3. [CONVERSION] String -> HEXADECIMAL ...
    Par tripop dans le forum Langage
    Réponses: 9
    Dernier message: 13/01/2005, 09h42
  4. conversion String en Date (parse trop permissif)
    Par ciloulou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/09/2004, 18h36
  5. [FLASH MX 2004] conversion string en int.
    Par calfater dans le forum Flash
    Réponses: 3
    Dernier message: 26/05/2004, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo