Précédent   Forum du club des développeurs et IT Pro > Autres langages > Langages fonctionnels > Haskell
Haskell Forum d'entraide sur la programmation en langage fonctionnel Haskell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/11/2010, 18h35   #1
james-mi
Membre du Club
 
Inscription : mai 2005
Messages : 130
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 130
Points : 47
Points : 47
Par défaut Problème avec les caractères accentués (et autres cédilles etc)

Je fais un programme où je traite des textes écrits en français. Je suis sous windows.

Mon problème, c'est que quand je lis dans le source, puis que j'écris dans le fichier output, je retrouve certains caractères remplacés par des codes abscons.

D'autre part, la sortie dans la console de GHCi donne encore autre chose.



Le code :
Code :
1
2
3
4
5
main :: IO ()
main = do
    fileData <- readFile "sandbox_input_texte_accentue.txt"
    putStrLn fileData
    writeFile "sandbox_output_texte_accentue.txt" $ show fileData
le fichier "sandbox_input_texte_accentue.txt"
Code :
1
2
3
4
5
test: youyou
sandbox: haha
àâéèêëäéïîöôùûç€
&@µ
et prévoir les mêems en majuscules
le fichier "sandbox_output_texte_accentue.txt"
Code :
"\239\187\191test: youyou\nsandbox: haha\n\195\160\195\162\195\169\195\168\195\170\195\171\195\164\195\169\195\175\195\174\195\182\195\180\195\185\195\187\195\167\226\8218\172\n&@\194\181\net pr\195\169voir les m\195\170ems en majuscules"
la sortie dans GHCi
Code :
1
2
3
4
5
test: youyou
sandbox: haha
Ã*âéèêëäéïîöôùûç€
&@µ
et prévoir les mêems en majuscules
runHaskell ne renvoie d'ailleurs pas la même chose :
Code :
"\180\9559\9488test: youyou\nsandbox: haha\n\9500\225\9500\243\9500\174\9500\191\9500\172\9500\189\9500\241\9500\174\9500\187\9500\171\9500\194\9500\9508\9500\9571\9500\9559\9500\186\212\233\188\n&@\9516\193\net pr\9500\174voir les m\9500\172ems en majuscules"
D'où les questions :
1. quels sont donc ces 3 caractères qui apparaissent en tête de mon fichier ???
2. comment avoir en sortie la même chose qu'en entrée ?

merci d'avance
james-mi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 21h07   #2
james-mi
Membre du Club
 
Inscription : mai 2005
Messages : 130
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 130
Points : 47
Points : 47
A noter que le code donne le bon résultat sans le show,
Code :
1
2
3
4
5
main :: IO ()
main = do
    fileData <- readFile "sandbox_input_texte_accentue.txt"
    putStrLn fileData
    writeFile "sandbox_output_texte_accentue.txt" fileData
mais j'ai besoin du show (pas dans cet exemple bien sûr, mais par ailleurs). J'ai le même problème de codage exposé ci-dessus avec la fonction encodeFile de Data.Object.Yaml.

Donc enlever le show n'est pas la façon par laquelle je veux traiter le problème.
james-mi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 08h14   #3
viro
Nouveau Membre du Club
 
Inscription : octobre 2002
Messages : 36
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2002
Messages : 36
Points : 27
Points : 27
Citation:
Envoyé par james-mi Voir le message
A noter que le code donne le bon résultat sans le show,
Code :
1
2
3
4
5
main :: IO ()
main = do
    fileData <- readFile "sandbox_input_texte_accentue.txt"
    putStrLn fileData
    writeFile "sandbox_output_texte_accentue.txt" fileData
mais j'ai besoin du show (pas dans cet exemple bien sûr, mais par ailleurs). J'ai le même problème de codage exposé ci-dessus avec la fonction encodeFile de Data.Object.Yaml.

Donc enlever le show n'est pas la façon par laquelle je veux traiter le problème.

Quelle version de ghc ?
viro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 19h21   #4
james-mi
Membre du Club
 
Inscription : mai 2005
Messages : 130
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 130
Points : 47
Points : 47
Citation:
Envoyé par viro Voir le message
Quelle version de ghc ?
version 6.12.3,
récupéré récemment par le biais de la Haskell platform version windows

ça peut jouer ?
james-mi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 08h27   #5
viro
Nouveau Membre du Club
 
Inscription : octobre 2002
Messages : 36
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2002
Messages : 36
Points : 27
Points : 27
Citation:
Envoyé par james-mi Voir le message
version 6.12.3,
récupéré récemment par le biais de la Haskell platform version windows

ça peut jouer ?
Oui. Depuis la version 6.12, GHC a un nouveau système de gestion de fichiers qui prend en compte l'encodage des entrées et des sorties.

Regarde la doc sur hSetEncoding
viro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h00.


 
 
 
 
Partenaires

Hébergement Web