Metin veya örneğini oluşturur bytestring
İyi günler.
Ben şimdi Haskell hakkında nefret bir şey dize ile çalışmak için paketleri miktar.
İlk yerli Haskell [Char]
dizeleri kullandım ama hackage kitaplıkları sonra tamamen sonsuz dönüşüm kaybetti kullanmaya başlamak için çalıştı. Her paket kendi el yapımı işini benimseyen bazı dizeleri farklı uygulama kullanmak gibi görünüyor.
Data.Text
dizeleri ve OverloadedStrings
uzantısı ile Şifremi yazdım ardından, işlevleri geniş bir dizi çünkü Text
seçtim, ama pek çok proje ByteString
tercih gibi görünüyor.< / ^ br .
Birini kullanmak için neden kısa akıl verebilir mi?
PS: ByteString
Text
dönüştürmek için nasıl btw?
Beklenen yazın maç olamaz Veri.Örneğini oluşturur bytestring.Tembel.İç.Örneğini oluşturur bytestring olayla türüne karşıMetin Beklenen tür: IO Veri.Örneğini oluşturur bytestring.Tembel.İç.Örneğini oluşturur bytestring Olayla türü: IO Metin
Data.Text.Encoding
, ama hayır şans encodeUtf8
denedim:
Beklenen yazın maç olamaz Veri.Örneğini oluşturur bytestring.Tembel.İç.Örneğini oluşturur bytestring olayla türüne karşıVeri.Örneğini oluşturur bytestring.İç.Örneğini oluşturur bytestring
UDP:
Yanıtları, *Parçalar iyiliği için teşekkürler yol gibi görünüyor, ama ben biraz sonuç, benim asıl işlevi bu gibi görünüyordu şok:
htmlToItems :: Text -> [Item]
htmlToItems =
getItems . parseTags . convertFuzzy Discard "CP1251" "UTF8"
Ve şimdi oldu:
htmlToItems :: Text -> [Item]
htmlToItems =
getItems . parseTags . fromLazyBS . convertFuzzy Discard "CP1251" "UTF8" . toLazyBS
where
toLazyBS t = fromChunks [encodeUtf8 t]
fromLazyBS t = decodeUtf8 $ intercalate "" $ toChunks t
Ve evet, bu fonksiyon çalışmıyor, çünkü onun yanlış, eğer biz kaynağı Text
, eminiz bu metin düzgün kodlanmış ve hazır için kullanma ve dönüştürme şey çok aptalcaydı, ama böyle bir ayrıntılı dönüşüm hala almak zorunda hiçbir yeri dışında htmltoItems
.
CEVAP
ByteStrings
ikili veri için özellikle yararlıdır, ama aynı zamanda eğer ihtiyacınız olan tüm ASCII karakter kümesi metin işlemek için etkili bir yoldur. Eğer unicode dizeleri işlemek gerekiyorsa, Text
kullanmak gerekir. Ancak, vurgulamak gerekir ki, ne bir yedek için başka, onlar genellikle kullanılan için farklı şeyler: Text
temsil saf unicode, hala ihtiyacımız kodlamak ve bir ikili ByteString
temsil ne zaman örneğin ulaştırma metin üzerinden bir soket veya bir dosya.
Burada iyi bir makale hakkında temel unicode, iyi bir iş açıklayan ilişkinin unicode kod noktaları (Text
) ve kodlanmış ikili bayt (ByteString
): The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets
Eğer tembel türevleri hata iletileri dayanarak yapıyorsunuz gibi) kullanıyorsanız Data.Text.Encoding modül iki veri, veya Data.Text.Lazy.Encoding arasında dönüştürmek için kullanabilirsiniz.
Nasıl bir dosya c ikili veya metin olu...
Nasıl tıklayın veya TextView bir metin...
Android: bir Düğme üzerinde metin ve g...
Android - Nasıl dinamik olarak değişti...
JavaScript ile boş bir nesne oluşturur...