Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Problème accents sf::http  (Lu 12196 fois)

0 Membres et 1 Invité sur ce sujet

Sipige

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re: Problème accents sf::http
« Réponse #15 le: Mars 22, 2018, 07:03:56 pm »
Non j'ai oublié de le mettre mais dans mon test il y était.

Hiura

  • SFML Team
  • Hero Member
  • *****
  • Messages: 4321
    • Voir le profil
    • E-mail
Re: Problème accents sf::http
« Réponse #16 le: Mars 23, 2018, 06:59:59 am »
Et ça non plus :
sf::String body;
string body2 = "test=" + "testé";
body = sf::String::fromUtf8(body2.begin(), body2.end());
request.setBody(body);
sf::Http::Response response = http.sendRequest(request);
 

Char* + char* n'est pas une concaténation de chaînes.

Après je sais pas quelles autres fautes tu as fait dans l'autre exemple comme il était mal copié collé.
SFML / OS X developer

Sipige

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re: Problème accents sf::http
« Réponse #17 le: Mars 23, 2018, 04:46:22 pm »
Ah oui, enfin considère que body2 est égal à "test=testé".

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re: Problème accents sf::http
« Réponse #18 le: Mars 23, 2018, 06:33:20 pm »
On dirait que tu continues à tester des trucs un peu au hasard. Est-ce que tu as potassé le sujet des encodages et compris de quoi il retournait ?
Laurent Gomila - SFML developer

Sipige

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re: Problème accents sf::http
« Réponse #19 le: Mars 24, 2018, 01:20:24 pm »
Citer
"testé" est enregistré dans un fichier, donc soumis à un premier encodage qui est celui de ton éditeur de texte. Ensuite un second intervient : celui qu'utilise le compilateur pour transformer ton fichier source en fichier compilé. Enfin, il y a celui qu'utilise SFML pour convertir ta std::string en sf::String, et qui est celui de la locale par défaut. Je te laisse creuser un peu pour trouver comment gérer tout ça ; la solution n'est pas forcément compliquée mais il est important de bien comprendre ce que tu fais ;)
Je ne suis pas sûr, mais je pense que cela ne vient pas du premier encodage. Le second me parait ne pas poser de problème et de toute façon, à la base j'utilise du texte rentré par l’utilisateur donc non-compilé. A mon avis, c'est le troisième qui bloque. Le problème, c'est que je sais pas quoi faire pour que le string soit converti en utf-8 par le sf::String.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re: Problème accents sf::http
« Réponse #20 le: Mars 24, 2018, 10:03:16 pm »
Citer
Je ne suis pas sûr, mais je pense que cela ne vient pas du premier encodage.
Celui-ci est facile à vérifier : ton éditeur de code a très certainement une option pour choisir l'encodage lors de la sauvegarde du fichier. Mais puisque ton texte n'est pas hard-codé on s'en fiche :)

Citer
à la base j'utilise du texte rentré par l’utilisateur
Ce serait vraiment sympa de ta part de poster du code qui correspond réellement à ton problème... L'utilisateur rentre son texte par quel moyen ? On peut voir le code correspondant ?

Citer
A mon avis, c'est le troisième qui bloque
Non, si tu as utilisé sf::String::fromUtf8 tu règles bien ce problème (pour autant que ta chaîne source soit bien en UTF-8).
Laurent Gomila - SFML developer

Sipige

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re: Problème accents sf::http
« Réponse #21 le: Mars 25, 2018, 01:47:37 pm »
Le code est vraiment trop long. Imagine une classe textEdit qui possède un string textEntered et des fonctions pour le modifier.
J'ajoute les caractères entrés avec :
if (event.type == sf::Event::TextEntered && entreeTexte.isActive())
{
     if (static_cast<int>(event.text.unicode) != 8 && static_cast<int>(event.text.unicode) != 13)
     {
          char caractere = static_cast<char>(event.text.unicode);
          entreeTexte.setTextEntered(entreeTexte.getTextEntered() + to_string(caractere));
          sf::sleep(sf::milliseconds(50));
     }
}
Et à la fin je met le setBody() de la requête à entreeTexte.getTextEntered().

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re: Problème accents sf::http
« Réponse #22 le: Mars 25, 2018, 04:22:27 pm »
Citer
char caractere = static_cast<char>(event.text.unicode);
Là il y a déjà un gros problème : tu convertis en char (8 bits) un élément UTF-32 (32 bits). Il y a donc forcément de la perte... Si tu travailles avec des sf::String pas besoin de passer par cette conversion inutile qui te fait perdre 99% de la plage Unicode : un simple sf_string += event.text.unicode suffit et fonctionne très bien.
Laurent Gomila - SFML developer

Sipige

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re: Problème accents sf::http
« Réponse #23 le: Mars 27, 2018, 07:26:51 pm »
Ah oui merci.
Je l'ai corrigé mais de toute façon, même en envoyant du texte directement rentré dans le code le résultat est le même.

Sipige

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re: Problème accents sf::http
« Réponse #24 le: Mars 31, 2018, 06:43:52 pm »
Hélas, je vais être obligé d'utiliser la technique ultime.

(click to show/hide)

Sipige

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re: Problème accents sf::http
« Réponse #25 le: Avril 02, 2018, 10:30:53 am »
Bon ben ça marche pas cette technique. Au final j'ai trouvé une solution sans accents.