डिफ़ॉल्ट रूप से, सिस्टम लोकेल में फ़ाइलें पढ़ी जाती हैं, इसलिए यदि आपके पास गैर-मानक एन्कोडिंग का उपयोग करने वाली फ़ाइल है, तो आपको फ़ाइल को एन्कोडिंग स्वयं को संभालने की आवश्यकता है।
foo = do
handle <- openFile "file.html" ReadMode
hSetEncoding handle utf8_bom
contents <- hGetContents handle
doSomethingWithContents
hClose handle
आपको प्रारंभ करना चाहिए। ध्यान दें कि यह कोई त्रुटि हैंडलिंग शामिल हैं, बेहतर तरीका इस प्रकार होगा
import Control.Exception -- for bracket
foo = bracket
(openFile "file.html" ReadMode >>= \h -> hSetEncoding h utf8_bom >> return h)
hClose
(\h -> hGetContents h >>= doSomething)
या
foo = withFile "file.html" ReadMode $
\h -> do hSetEncoding h utf8_bom
contents <- hGetContents h
doSomethingWith contents
स्रोत
2012-10-15 20:33:53
क्या आप शायद एक न्यूनतम फ़ाइल का हेक्स डंप पोस्ट कर सकते हैं जो आपके लिए यह त्रुटि दिखाता है? मैं आपकी त्रुटि को डुप्लिकेट नहीं कर सकता। – ghoti
इस चरित्र का प्रयोग करें: 'č' –
आपका लोकेल क्या है? क्या यह एक यूटीएफ -8 एक या कुछ ucs2ish है (नोटपैड ++ विंडोज का सुझाव देता है)? –