我试图处理一个包含俄语符号的文件。在读取文件并将一些文本写入文件后,我得到如下信息:
\160\192\231\229\240\225\224\233\228\230\224\237
我怎样才能得到正常的符号?
我试图处理一个包含俄语符号的文件。在读取文件并将一些文本写入文件后,我得到如下信息:
\160\192\231\229\240\225\224\233\228\230\224\237
我怎样才能得到正常的符号?
如果你得到带有反斜杠和数字的字符串,那么当你想调用“putStr”时,听起来你可能会调用“print”。
如果你处理 Unicode,你可以试试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 "Вася Пупкин"
但是,由于代码页,它在我的 Windows CLI 中无法正常工作,导致输出乱码。如果您的语言环境设置正确,我希望它可以在其他类 Unix 系统上正常工作。但是,在所有系统上都应该成功写入文件。
更新:
一个关于编码包使用的例子。
我已经成功了。
{-# 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