Símbolos russos de Haskell io
-
27-09-2019 - |
Pergunta
Tento o arquivo de processo de qual escrito por símbolos russos. Quando lido e depois de escrever texto para arquivo, eu recebo algo como:
"\160\192\231\229\240\225\224\233\228\230\224\237"
Como posso obter símbolos normais?
Obrigado
Solução 3
Eu tenho sucesso.
{-# LANGUAGE ImplicitParams #-}
import Network.HTTP
import Text.HTML.TagSoup
import Data.Encoding
import Data.Encoding.CP1251
import Data.Encoding.UTF8
openURL x = do
x <- simpleHTTP (getRequest x)
fmap (decodeString CP1251) (getResponseBody x)
main :: IO ()
main = do
tags <- fmap parseTags $ openURL "http://www.trade.su/search?ext=1"
let TagText r = partitions (~== "<input type=checkbox>") tags !! 1 !! 4
appendFile "out" r
Outras dicas
Se você estiver recebendo cordas com barrashshes e números, parece que você pode estar chamando de "impressão" quando quiser ligar para "putstr".
Se você lidar com Unicode, você pode tentar Pacote UTF8-String
import System.IO hiding (hPutStr, hPutStrLn, hGetLine, hGetContents, putStrLn)
import System.IO.UTF8
import Codec.Binary.UTF8.String (utf8Encode)
main = System.IO.UTF8.putStrLn "Вася Пупкин"
No entanto, não funcionou bem na minha cli do Windows, atravessando a saída por causa do código de código. Espero que funcione bem em outros sistemas do tipo Unix, se o seu local estiver definido corretamente. No entanto, escrever para arquivo deve ter sucesso em todos os sistemas.
ATUALIZAR:
Um exemplo na codificação de uso do pacote.