Comment faire pour que Haskell ou ghci puissent montrer des caractères chinois et exécuter des caractères chinois nommés scripts?

je veux faire un script Haskell pour lire des fichiers dans mon dossier /home. Cependant, il y a beaucoup de fichiers nommés avec des caractères chinois, et Haskell et Ghci ne peuvent pas le gérer. Il semble que Haskell et Ghci ne sont pas doués pour afficher des caractères UTF-8.

Voici ce que j'ai rencontré:

Prelude> "让Haskell或者Ghci能正确显示汉字并且读取汉字命名的文档"

"753Haskell110773Ghci021491830174034721383182988835462721383629517340991723"
11
demandé sur dda 2012-12-26 15:07:14

2 réponses

Prelude> putStrLn "753Haskell110773Ghci021491830174034721383182988835462721383629517340991723"
让Haskell或者Ghci能正确显示汉字并且读取汉字命名的文档

GHC gère unicode très bien. Voici ce que vous devez savoir à ce sujet:

il utilise l'encodage de votre système pour la conversion des octets en caractères et vice-versa lors de la lecture ou de l'écriture sur la console. Puisqu'il a fait la conversion des octets aux caractères correctement dans votre exemple, je dirais que votre encodage système est réglé correctement.

show fonction String a un jeu de caractères de sortie limité. show la fonction est utilisée par GHCI pour imprimer le résultat de l'évaluation d'une expression, et par le print fonction pour convertir la valeur transmise à un String représentation.

putStr et putStrLn les fonctions sont pour écrire un String pour la console exactement comme c'était prévu.

20
répondu Carl 2012-12-26 11:21:01

Merci à Carl, j'ai utilisé putStrLn comme un enveloppant autour de mon fuction:

ghci> let removeNonUppercase st = [c | c <- st, c `elem` ['А'..'Я']]
ghci> putStrLn (removeNonUppercase "Ха-ха-ха! А-ха-ха!")
ХА

Tout fonctionne bien!

0
répondu Yury Kochubeev 2015-07-31 13:38:52