Поддержка Юникода System.Directory.getDirectoryContents

Следующий код печатает что-то вроде °Ð½Ð´Ð¸Ñ-ÐÑпаниÑ

getDirectoryContents "path/to/directory/that/contains/files/with/nonASCII/names"
  >>= mapM_ putStrLn

Похоже, это ошибка ghc, и она уже исправлена ​​в репозитории. Но что делать, пока все не обновят ghc?

В последний раз, когда я столкнулся с такой проблемой (это было несколько лет назад, кстати), я использовал пакет utf8-string для преобразования строк, но я не помню, как я это сделал, и поддержка юникода ghc заметно изменилась в последние годы.

Итак, каков наилучший (или, по крайней мере, рабочий) способ получить содержимое каталога с полной поддержкой юникода?

ghc версии 7.0.4 языковой стандарт en_US.UTF-8


person Yuras    schedule 24.07.2011    source источник


Ответы (2)



Я бы рекомендовал взглянуть на system-filepath, который предоставляет абстрактный тип данных для представления путей к файлам. Я широко использовал его для некоторого внутреннего кода, и он прекрасно работает.

person Michael Snoyman    schedule 24.07.2011
comment
Благодарю. это как fixName = encodeString . fromText . T.pack - person max taldykin; 18.02.2012