2015-02-28 10 views
9

Come far funzionare il seguente codice con Unicode (CJK) in Prompt dei comandi/LameShell?GHCi su Windows: come leggere l'input Unicode dalla console?

main = getLine >>= putStrLn 

(di Windows 8.1, Haskell Platform 2014)

No, chcp 65001 non funziona, né chcp 10000.

No, non desidero modificare Sistema locale (Pannello di controllo/Orologio, Lingua e Regione/Lingua/Modifica data, ora o formati numerici/Amministrativo) da Inglese (Stati Uniti) ad altri.

Sì, ho impostato il font su Lucida Console.

Ho provato ConEmu/Cmder/Console2, hanno detto tutti "Eccezione: hGetLine: fine del file". Ho anche provato Emacs, (utilizzo Vim), non si è bloccato, ma ottengo sempre spazi, indipendentemente da ciò che immetto.

Patch GHC e ricompilare è accettabile, se non c'è altro modo.

Qualche idea?

Grazie.

+0

Hai provato 'hSetEncoding' da in' System.IO'? – Arnon

+0

Non funziona. Dopo 'chcp 65001',' hGetEncoding stdin' mi dà già 'Solo UTF-8', ho appena fatto un' hSetEncoding stdin utf8' in ogni caso, senza fortuna. –

+0

Ho già avuto questo problema su CentOS e l'ho risolto con hSetEncoding. Non sembra che funzioni anche sul mio Windows 8. È davvero bizzarro. Forse la patch di GHC è il modo corretto per affrontarlo per ora. – Arnon

risposta

0

PowerShell supporta nativamente UTF. Supponendo Capisco il vostro esempio (main = getLine >>= putStrLn) correttamente:

$var = Read-Host 
Write "$var" 

O semplicemente:

Read-Host 
Problemi correlati