2015-10-15 29 views
7

Próbuję użyć GHC na winie, aby zbudować jedną z moich aplikacji Haskell dla Windows. Do tej pory działa to dobrze, ale utknąłem z uruchomionym zestawem testowym, który ma być uruchomiony w lokalizacji UTF8 (na przykład LANG=C.utf8).Zdobądź programy Haskell zakładające lokalizację UTF8 pod winem

Niestety, pod winem, środowisko wykonawcze Haskell zawsze wierzy, że chcę używać kodowej 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 

Oprócz zmieniania rzeczywisty kod, aby ustawić kodowanie wszystkich uchwytów: Jak robię Haskell użycie programu UTF-8 (tj kodowej 65001) tutaj?

+0

Ten alternatywny sposób na ustawienie zmiennych środowiskowych może okazać się pomocny. Jeśli, to, środowisko ma z tym coś wspólnego. https://www.winehq.org/docs/wineusr-guide/environment-variables – dfeuer

+0

Nie mam powodu przypuszczać, że zmienne środowiskowe mają wpływ na stronę kodową - niestety. –

+0

Czy próbowałeś też silniejszego 'LC_ALL' zamiast' LANG'? Po prostu wyrzucam tutaj domysły. – dfeuer

Odpowiedz

2

Nie mam tutaj konfiguracji Wine/Haskell, więc weź to z wieloma ziarnami soli. Wygląda GHC.IO.Encoding ma co może być właściwym utwory na to:

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

można spróbować tworzenia programów testowych setLocaleEncoding utf8 zanim się dzieje. Nie jest to dokładnie to, czego chciałeś, ale jeśli to działa, wydaje się łatwiejsze niż ustawienie osobno dla każdego uchwytu.

+0

Dzięki. Naprawdę chciałbym czegoś, co nie modyfikuje kodu, dzięki czemu mogę przetestować program tak, jakby działał na komputerze użytkownika z włączoną obsługą utf8. Będę dalej szukać. –

0

Nie wiem, czy to działa dla Wine, ale czy próbowałeś użyć polecenia CHCP, aby ustawić aktualną stronę kodową systemu Windows?

+0

To właśnie polecam moim użytkownikom w prawdziwych oknach. Niestety, polecenie to nie jest dostępne w WINE. –

+0

Szkoda ... No cóż, warto było spróbować! – MathematicalOrchid