6

ロシア語の記号を含むファイルを処理しようとしています。読み取り時とファイルへのテキストの書き込み後に、次のような結果が得られます。

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

通常のシンボルを取得するにはどうすればよいですか?

4

3 に答える 3

7

バックスラッシュと数字を含む文字列を取得している場合、「putStr」を呼び出したいときに「print」を呼び出しているように聞こえます。

于 2010-05-15T16:23:34.283 に答える
2

私は成功しました。

{-# 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
于 2010-05-16T15:54:08.537 に答える
2

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 ライクなシステムでも問題なく動作すると思います。ただし、ファイルへの書き込みはすべてのシステムで成功するはずです。

アップデート:

エンコード パッケージの使用例。

于 2010-05-15T13:19:30.167 に答える