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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top