I want to make a Haskell script to read files in my /home folder. However there are many files named with Chinese characters, and Haskell and Ghci cannot manage it. It seems Haskell and Ghci aren’t good at displaying UTF-8 characters.
Here is what I encountered:
Prelude> "让Haskell或者Ghci能正确显示汉字并且读取汉字命名的文档"
"\35753Haskell\25110\32773Ghci\33021\27491\30830\26174\31034\27721\23383\24182\19988\35835\21462\27721\23383\21629\21517\30340\25991\26723"
GHC handles unicode just fine. These are the things you should know about it:
It uses your system encoding for converting from byte to characters and back when reading from or writing to the console. Since it did the conversion from bytes to characters properly in your example, I’d say your system encoding is set properly.
The
showfunction onStringhas a limited output character set. Theshowfunction is used by GHCI to print the result of evaluating an expression, and by theprintfunction to convert the value passed in to aStringrepresentation.The
putStrandputStrLnfunctions are for actually writing aStringto the console exactly as it was provided to them.