2015-10-15 10 views
7

Sto cercando di utilizzare GHC su wine per creare una delle mie applicazioni Haskell per Windows. Finora, questo funziona bene, ma sono bloccato con la mia suite di test, che è destinata ad essere eseguita in un locale UTF8 (LANG=C.utf8 per esempio.)I programmi Haskell assumono una versione locale UTF8 sotto il vino

Sfortunatamente, sotto il vino, il runtime Haskell crede sempre che voglio utilizzare una tabella codici 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 

Oltre a cambiare il codice effettivo per impostare la codifica di tutti i manici: Come faccio a rendere il programma di Haskell utilizzare UTF-8 (cioè tabella codici 65001) qui?

+0

È possibile trovare questo modo alternativo per impostare le variabili di ambiente utili. Se, cioè, l'ambiente ha qualcosa a che fare con esso. https://www.winehq.org/docs/wineusr-guide/environment-variables – dfeuer

+0

Non ho motivo di credere che le variabili d'ambiente influenzino la codepage - sfortunatamente. –

+0

Inoltre, hai provato il più forte 'LC_ALL' invece di' LANG'? Sto solo tirando fuori ipotesi qui. – dfeuer

risposta

2

Non ho una configurazione Wine/Haskell qui, quindi prendi questo con molti granelli di sale. Sembra GHC.IO.Encoding ha quello che potrebbe essere i pezzi giusti per questo:

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

si potrebbe provare a fare i vostri programmi di test setLocaleEncoding utf8 prima di andare avanti. Questo non è esattamente quello che volevi, ma se funziona sembra più semplice che impostarlo separatamente per ogni handle.

+0

Grazie. Mi piacerebbe davvero qualcosa che non modifichi il codice, in modo da poter testare il programma come se fosse in esecuzione sul computer degli utenti con utf8 abilitato. Continuerò a cercare. –

0

Non so se questo funziona per Wine, ma hai provato a utilizzare il comando CHCP per impostare la tabella codici di Windows corrente?

+0

Questo è ciò che raccomando i miei utenti su Windows reale. Sfortunatamente, quel comando non è disponibile in WINE. –

+0

Peccato ... Oh bene, valeva la pena provare! – MathematicalOrchid