Здравствуйте, BulatZiganshin, Вы писали:
BZ>1. исходники в ghc записываются в utf-8
BZ>2. строки хранятся в unicode кодировке (4 байта на символ)
BZ>3. файлы читаются байт-в-байт. поэтому значение 140, к примеру, превратится в unicode символ с кодом 140. твоя задача — превратить 140 в число, соответствующее нужной русской букве
BZ>для этого в винде (если у тебя русская локаль) нужно сделать следующее:
А почему не использовать stringToUnicode из System.Win32.NLS?
ansi2unicode = stringToUnicode cP_ACP
oem2unicode = stringToUnicode cP_OEM
Ну и заставить работать регулярки с русскими символами таки не получилось — ничего не находит...
Простейший тест:
import Text.Regex.PCRE
re_test :: String -> String -> Bool
re_test re str = str =~ re
main = print $ re_test "^п.*" "привет"
Выдаёт после компиляции:
uni_regs.exe: user error (Text.Regex.PCRE.String died: (1,"nothing to repeat"))
Похоже не умеет Text.Regex.PCRE с национальными символами работать...
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>