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

Python Discussion :

Je n'arrive pas a coder en ISO 15924


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Je n'arrive pas a coder en ISO 15924
    Bonjour je suis nouveau par ici et je ne sais pas trop par où commencer .

    Voilà j'aimerais pouvoir insérer des caractères runique (ᚨᛒᚳᛞᛖᚠᚷᚺᛁᛃᚲᛚᛗᚾᛟᛈᚦᚱᛊᛏᚢᛇᚹᛜᚣᛉ)
    pour "translater" des textes en alphabet latin

    a => ᚨ
    B => ᛒ
    etc . . .

    sur python un message d'erreur s'affiche :
    " Unknown encoding ISO-15924. Saving as UTF-8 "
    Du coup je suis bloqué (j'ai un niveau "Début de programmation"! en gros c'est pas top )

    pourriez vous m'aider ?

    Merci d’avance

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Tout d'abord, je te recommande de passer par l'UTF-8 pour ce genre de manipulation.

    Ensuite il faudrait préciser l'origine de ton texte runnique, fichier, copier-coller, buffer, dieu sait quoi ?

    Si je copie ton exemple je reproduis sans peine dans un fichier que je peux relire intact.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    # -*- coding: utf-8 -*-
     
    CHAIN = u'ᚨᛒᚳᛞᛖᚠᚷᚺᛁᛃᚲᛚᛗᚾᛟᛈᚦᚱᛊᛏᚢᛇᚹᛜᚣᛉ'
     
    with open('runes', 'w') as outf:
        outf.write(CHAIN.encode('utf8', 'replace'))
     
    with open('runes', 'r') as inf:
        print(inf.read())
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    vincent@tiemoko:~/Bureau$ python coding.py 
    ᚨᛒᚳᛞᛖᚠᚷᚺᛁᛃᚲᛚᛗᚾᛟᛈᚦᚱᛊᛏᚢᛇᚹᛜᚣᛉ

    Edit: Désolé mais mon copié-collé dans les balises code ne vous fait pas apparaître les caractères mais leur encodage.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci de ta réponse rapide !

    Mais je crois m’être mal exprimer ...
    Je voudrais , a partir d'un texte en alphabet latin , créer le même texte mais avec les lettre équivalentes en runes

    "bonjour" deviendrais "ᛒᛟᚾᛃᛟᚢᚱ"

    Encore désolé si tu n'avais pas compris ça !

    PS :A mois que ce soit moi qui soit trop profane pour comprendre ce que tu as dis!

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 465
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 465
    Points : 9 257
    Points
    9 257
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    A mon avis, ce n'est pas un problème d'encodage, mais de conversion selon une table de correspondance. Ecrire un mot en français comme "Bonjour" avec des caractères non latin (runiques, russes, indous, etc...) suppose la correspondance des 2 alphabets, et je ne pense pas (mais je peux me tromper!) que cette correspondance existe dans l'unicode.

    Voilà comment je ferais.

    1- il faut créer une table de correspondance entre les 2 alphabets. Cette table pourrait être un dictionnaire (=objet Python). A partir des 2 alphabets, on pourrait faire comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def creatable(alphabet1, alphabet2):
        table = {}
        for i, car in enumerate(alphabet1):
            table[car] = alphabet2[i]
        return table
    On peut ensuite créer une fonction de conversion comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def convertir(chaine, table):
        resultat = ''
        for car in chaine:
            resultat += table[car]
        return resultat
    Application: pour simplifier on va créer une table avec le mot "bonjour" et sa conversion en caractère runique puisqu'elle est connue. Puis, on va convertir ce même mot.

    A noter qu'en interne il ne faut pas travailler en utf-8 mais en unicode (d'où le 'u' devant les guillemets en Python 2.7). Mais l'utf-8 est très bien pour les entrées/sorties: par exemple, si on enregistre un fichier avec les caractères runiques, il faut faire la conversion d'unicode en utf-8 avec le module codecs.

    chaine1 = u"bonjour"
    chaine2 = u"ᛒᛟᚾᛃᛟᚢᚱ"

    table = creatable(chaine1, chaine2)

    print convertir(chaine1, table)
    Ce qui affiche:

    ᛒᛟᚾᛃᛟᚢᚱ
    A noter que, cerise sur le gâteau, on peut inverser facilement la table ci-dessus pour faire la conversion inverse:

    tableinv = {v: k for k, v in table.items()}
    print convertir(u"ᛒᛟᚾᛃᛟᚢᚱ", tableinv)
    Bonjour
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Cet alphabet est présent dans l’Unicode !
    j'avais pensé faire un input et a partir de cet input le programme changerais les 2 alphabet !

    Mais l'erreur est qu'il ne trouve pas ces runes !
    j'ai essayer de mettre en entête

    # -*- coding: ISO-15924 -*-

    ça n'a pas l'air de marcher !

    pourtant c'est la portion Unicode correspondante !

    Merci d’avance !

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 465
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 465
    Points : 9 257
    Points
    9 257
    Billets dans le blog
    6
    Par défaut
    L'alphabet runique est dans l'unicode, mais c'est la correspondance entre, par exemple le 'B' et le 'ᛒ' qu'on cherche. Si cette correspondance n'est pas établie, il faut la créer comme je l'ai dit.

    Pour prendre un exemple plus courant que le runique, la lettre grecque alpha est copieusement décrite ici (par exemple) en tant que caractère unicode: http://www.fileformat.info/info/unic.../3b1/index.htm, mais je n'ai trouvé aucun endroit où on dit que ça correspond au 'a' latin.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

Discussions similaires

  1. script que je n'arrive pas à coder
    Par mussara dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/06/2006, 14h28
  2. [Kylix 3] Je n'arrive pas à utiliser MySQL
    Par usebob dans le forum EDI
    Réponses: 4
    Dernier message: 15/04/2005, 10h18
  3. Je n'arrive pas à détruire une fenêtre
    Par CORREGE Frédéric dans le forum MFC
    Réponses: 6
    Dernier message: 22/02/2004, 20h28
  4. j'arrive pas a arreter mon thread d'arriere-plan
    Par ms91fr dans le forum Langage
    Réponses: 6
    Dernier message: 06/06/2003, 21h36

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