Kode sederhana di bawah ini tidak berfungsi dengan benar di terminal Windows dengan karakter UTF-8, baik dengan getLine/putStrLn dari Prelude atau dari Data.Text.IO:

main = forever $ getLine >>= putStrLn

Ini menggemakan karakter utf-8 selama input, lalu mencetak "?"s sebagai ganti karakter utf-8; beralih encoding dengan chcp 65001 menjadikannya spasi.

Saya telah mengunduh terminal baru dan mengaktifkan dukungan utf-8 sebagai halaman ini disarankan, tetapi tidak berpengaruh.

Penjelasan ini tampaknya terkait, tetapi solusi yang diusulkan di sana tidak berfungsi (kode melakukan hal yang sama).

Rupanya python memiliki masalah serupa

Apakah ada perpustakaan/solusi yang akan bekerja dengan GHC 8.x?

Tolong bantu!

EDIT: setelah penyelidikan lebih lanjut, masalahnya adalah selama input juga - jika alih-alih putStrLn saya mencetak kode karakter dengan mapM_ (print . ord) s semuanya adalah 63 tanpa mengubah penyandian atau 0 setelah chcp 65001.

hSetEncoding stdin utf8 tidak membantu

0
esp 3 April 2021, 10:56

1 menjawab

Jawaban Terbaik