You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Data.Text.Internal.Text转换为Data.ByteString.Lazy.ByteString?

Haskell Text 转惰性 ByteString 实现方案

首先明确:Data.Text.Internal.Text 是 text 包的内部导出类型,和对外暴露的 Data.Text.Text 完全等价,直接按普通 Text 类型处理即可。

文本转字节序列必须指定字符编码,以下是最常用的UTF-8编码转换方案:

  • 首先确保你的项目依赖了 text 和 bytestring 两个核心包
  • 导入所需模块:
import qualified Data.Text as T
import qualified Data.Text.Encoding as TE
import qualified Data.ByteString.Lazy as BL
  • 转换逻辑直接组合现有函数即可:
textToLazyBS :: T.Text -> BL.ByteString
textToLazyBS = BL.fromStrict . TE.encodeUtf8

如果需要使用其他编码(比如UTF-16、GBK等),替换编码函数即可:

  • 若使用UTF-16LE编码,将TE.encodeUtf8替换为TE.encodeUtf16LE
  • 若使用GBK等非Unicode编码,需要引入text-encoding依赖,使用对应编码的编码函数后,同样调用BL.fromStrict转成惰性ByteString即可。

示例调用:

main :: IO ()
main = do
  let srcText = T.pack "测试文本 123"
      lazyBS = textToLazyBS srcText
  BL.putStrLn lazyBS

注意:不要使用无编码的unsafe转换函数,否则会出现不可预期的乱码问题。

内容的提问来源于stack exchange,提问作者Chris Stryczynski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:36:00