هاسكل IO الرموز الروسية
-
27-09-2019 - |
سؤال
أحاول ملف العملية الذي كتبه الرموز الروسية. عند القراءة وبعد كتابة نص للملف ، أحصل على شيء مثل:
"\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
نصائح أخرى
إذا كنت تحصل على سلاسل مع عوامل تراجع وأرقام ، فيبدو أنك قد تتصل بـ "طباعة" عندما تريد الاتصال "Putstr".
إذا تعاملت مع Unicode ، فقد تحاول حزمة utf8 سلسلة
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 الذي يتجول في الإخراج بسبب codepage. أتوقع أن تعمل بشكل جيد على أنظمة أخرى تشبه Unix إذا تم تعيين موقعك بشكل صحيح. ومع ذلك ، يجب أن تكون الكتابة إلى الملف ناجحة على جميع الأنظمة.
تحديث:
مثال على ترميز حزمة استخدام.
لا تنتمي إلى StackOverflow