代码之家  ›  专栏  ›  技术社区  ›  Bjorn

在Haskell中,如何获得UTF8字符串中的字节数?

  •  3
  • Bjorn  · 技术社区  · 8 年前

    "Hello Snowman ☃!" 。它有16个字符,占用18个字节。如何让haskell显示这个字符串占用的字节数?

    我试过使用数据。ByteArray,数据。文本、ByteString,在每种情况下,我都做得很差。

    1 回复  |  直到 8 年前
        1
  •  6
  •   Alec    8 年前

    你可以使用优秀的 utf8-string 用于此的包。

    import qualified Data.ByteString as BS
    import qualified Data.ByteString.UTF8 as UTF8
    
    numBytesUtf8 :: String -> Int
    numBytesUtf8 = BS.length . UTF8.fromString
    

    然后,用你的例子来说,

    ghci> numBytesUtf8 "Hello Snowman ☃!"
    18
    

    UTF8.fromString BS.length 可能是您想要使用的函数,但字符串可能应该是 ByTestRing让您对编码它们需要多少字节感兴趣。