She*_*rsh 4 haskell byte-order-mark character-encoding bytestring
我有LazyByteString可能从BOM开始.从中删除BOM的最简单,最有效的方法是ByteString什么?
我觉得我一定是在误解这个问题.这不是归结为检查字节串的前三个字节并有条件地丢弃这些字节吗?
take.(==).drop.把这些放在一起我们得到:
import Data.ByteString.Lazy as BS
dropBOM bs | BS.take 3 bs == BS.pack [0xEF,0xBB,0xBF] = BS.drop 3 bs
| otherwise = bs
Run Code Online (Sandbox Code Playgroud)
然而,即使在处理了大量的utf8之后,我也从未觉得我需要明确处理BOM,这要归功于提供大多数所需操作的Text等软件包.也许您可以通过另一种方式解决您的问题,而不是手动重置字节串.