2015-10-15 1 views
7

J'essaie d'utiliser GHC sur le vin pour construire une de mes applications Haskell pour Windows. Jusqu'à présent, cela fonctionne bien, mais je suis coincé en cours d'exécution de ma suite de tests, qui est destinée à être exécutée dans un environnement UTF8 (LANG=C.utf8 par exemple.)Obtenir des programmes Haskell pour supposer une locale UTF8 sous le vin

Malheureusement, sous Wine, la runtime Haskell croit toujours que je veux utiliser une page de code non-unicode:

$ wine ghc -e 'GHC.IO.Encoding.CodePage.localeEncoding' 
CP850 
$ LANG=C.utf8 wine ghc -e 'GHC.IO.Encoding.CodePage.localeEncoding' 
CP437 
$ LC_ALL=C.utf8 wine ghc -e 'GHC.IO.Encoding.CodePage.localeEncoding' 
CP437 

en plus de changer le code réel pour définir l'encodage de toutes les poignées: Comment puis-je faire le programme Haskell utilisation UTF-8 (c.-à-codepage 65001) ici?

+0

Vous pouvez trouver cette autre façon de définir des variables d'environnement utiles. Si, c'est-à-dire, l'environnement a quelque chose à voir avec cela. https://www.winehq.org/docs/wineusr-guide/environment-variables – dfeuer

+0

Je n'ai aucune raison de croire que les variables d'environnement influencent malheureusement la page de codes. –

+0

Aussi, avez-vous essayé le plus fort 'LC_ALL' au lieu de' LANG'? Je suis juste en train de jeter des conjectures ici. – dfeuer

Répondre

2

Je n'ai pas de configuration Wine/Haskell ici, alors prenez ceci avec beaucoup de grains de sel. Il semble GHC.IO.Encoding a ce qui pourrait être les bonnes pièces pour ceci:

setLocaleEncoding :: TextEncoding -> IO() 
utf8 :: TextEncoding 

Vous pouvez essayer de faire vos programmes de test setLocaleEncoding utf8 avant d'y aller. Ce n'est pas tout à fait ce que vous vouliez, mais si cela fonctionne, il semble plus facile que de le régler séparément pour chaque poignée.

+0

Merci. Je voudrais vraiment quelque chose qui ne modifie pas le code, de sorte que je suis capable de tester le programme comme s'il était en cours d'exécution sur la machine de l'utilisateur avec utf8 activé. Je vais continuer à chercher. –

0

Je ne sais pas si cela fonctionne pour Wine, mais avez-vous essayé d'utiliser la commande CHCP pour définir la page de codes Windows actuelle?

+0

C'est ce que je recommande à mes utilisateurs sur de vraies fenêtres. Malheureusement, cette commande n'est pas disponible dans WINE. –

+0

Dommage ... Eh bien, ça valait le coup d'essayer! – MathematicalOrchid