Вопрос

Я пытаюсь процесс обработки, который писал русских символов. При чтении и после записи текста в файл я получаю что-то вроде:

"\160\192\231\229\240\225\224\233\228\230\224\237"

Как я могу получить нормальные символы?

Спасибо

Это было полезно?

Решение 3

У меня есть успех.

{-# 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

Другие советы

Если вы получаете строки с обратной косой черты и цифры, то звучит так, будто вы можете позвонить «Print», когда вы хотите назвать «putstr».

Если вы имеете дело с Unicode, вы можете попробовать UTF8-String Package

import System.IO hiding (hPutStr, hPutStrLn, hGetLine, hGetContents, putStrLn)
import System.IO.UTF8
import Codec.Binary.UTF8.String (utf8Encode)
main = System.IO.UTF8.putStrLn "Вася Пупкин"

Однако он не работал хорошо в моем Windows CLI, перевязывающую вывод из-за кодовой страницы. Я ожидаю, что это нормально работает на других системах Unix, если ваша локаль устанавливается правильно. Однако запись в файл должна быть успешной по всем системам.

ОБНОВИТЬ:

Пример на кодировке использования пакета.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top