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 :

caracteres speciaux (non ASCII)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Par défaut caracteres speciaux (non ASCII)
    Salut, je crais un petit programme en GTK+ mais mon problème ne vient pas de GTK mais du langage C (c'est pour ca que je poste ici et non pas dans le forum GTK)
    Mon programme doit prendre dans un champs une adresse (aussi bien Local (C:\) que externe (http://)) puis copier la cible dans un nouveau dossier. le problème survient lorsque l'URL possède un caractère non-ASCII (é,è,à,¤, etc...)
    impossible de copier la cible ou je veux. j'ai tenter de récupérer l'URL en UTF8 (GTK le permet) mais ca ne change pas le problème puisque c'est en C que je doit traiter le char*

    donc en C (uniquement, osef de GTK pour le coups) comment fait on pour prendre une adresse qui a un caractère accentué puis faire une copie de sa cible vers un dossier précis (je fais un appel system avec "cp" pour la copie).

    merci

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Salut, ca à quelque chose à voir avec la GLib, utilisée par GTK+ donc plus ou moins indirectement, un problème lié à GTK+ ! Il faut en fait transformer ta chaîne en UTF-8 avec la fonction g_locale_to_utf8

    Du moins je pense que ca puisse venir de là
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre éclairé
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Par défaut
    non j'utilise bien cette fonction pour la reccupereation des URL, mais le problème ne viens pas de GTK le problème vient du fait que le langage C est basé sur le code ASCII, qui ne comprend pas les caractère spéciaux il faut donc que je trouve une méthode sans passer par le GTK pour pouvoir par exemple faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("cp c:\école.png image/école.png");
    j'ai eu tord de parler de GTK parce que c'est un problème recrurent a tout mes programmes qui peuvent prendre une URL en paramètre. ainsi je cherche juste pour le programme le plus bête du monde (un simple programme qui prend l'argv[1] et qui copie sa cible vers un autre dossier) de pouvoir gérer les accents

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $./mon_prog ../école.png école.png
    avec
    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
     
    int main(int argc, char **argv)
    {
     char *tmp;
     
     if (argc == 3)
     {
      tmp = malloc(sizeof(*tmp) * (strlen(argv[1]) + strlen(argv[2]) + strlen("image/") + 5));
      strcpy(tmp, "cp ");
      strcat(tmp, argv[1]);
      strcat(tmp, " image/");
      strcat(tmp, argv[2]);
      system(tmp);
     }
    }
    PS : je fais le code a la volé donc il est peut être pas juste ni opérationnel mais c'est pour l'idée

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Sous Windows tu as éventuellement la fonction AnsiToOem(.....); mais ce n'est pas portable évidemment.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre éclairé
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Par défaut
    arf ouai je peut toujours l'utiliser avec un ifndef mais je code pour toute plateforme alors si c'est pas portable :/

  6. #6
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    et en utilisant les wchar_t (C95) (cf. <wchar.h>) ?

Discussions similaires

  1. Utilisation de caracteres non ASCII
    Par Nightmare Theater dans le forum Général Python
    Réponses: 5
    Dernier message: 11/12/2009, 10h37
  2. [sgbd] perl, oracle et caracteres speciaux
    Par fsapet dans le forum SGBD
    Réponses: 2
    Dernier message: 07/09/2004, 11h22
  3. [Débutant][String] Remplacez les caractères speciaux
    Par paf15 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 27/04/2004, 22h39
  4. [langage] Caractères spéciaux
    Par killy dans le forum Langage
    Réponses: 5
    Dernier message: 28/11/2003, 10h39
  5. insertion caracteres speciaux html
    Par arcane dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/09/2003, 14h16

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