Haskell 将命令行参数解析为ByteString

Haskell 将命令行参数解析为ByteString,haskell,bytestring,Haskell,Bytestring,是否有一种跨平台的方法可以通过TestRing将程序参数解析为列表(而不是字符串列表,如中所示) 我从软件包中知道,但我希望能够在没有cygwin的情况下在Windows上运行我的程序。我也知道,但这会将字符截断为8位,我希望能够处理任何Unicode字符序列的字节 编辑:我的程序是一个简单的密码,它将密钥的位与消息的位进行异或运算。出于这个原因,我更愿意处理提供给程序的精确位,而不是将它们转换为UTF-8并首先返回。fromStringData.ByteString.UTF8中的函数“将Has

是否有一种跨平台的方法可以通过TestRing将程序参数解析为
列表(而不是
字符串列表,如中所示)

我从软件包中知道,但我希望能够在没有cygwin的情况下在Windows上运行我的程序。我也知道,但这会将字符截断为8位,我希望能够处理任何Unicode字符序列的字节


编辑:我的程序是一个简单的密码,它将密钥的位与消息的位进行异或运算。出于这个原因,我更愿意处理提供给程序的精确位,而不是将它们转换为UTF-8并首先返回。

fromString
Data.ByteString.UTF8中的函数“将Haskell字符串转换为UTF8编码的ByteString。”-请参阅@w.b,这可能会起作用,但理想情况下,我希望在提供参数的字符编码方案(例如UTF-16)中处理参数。如果要处理Unicode,为什么不使用
Text
?ByteString对Unicode并不友好。除此之外,您还可以将
字符串
转换为
CStringLen
,并从中创建
ByteString
。毕竟,您已经在
IO
“处理提供参数的字符编码方案中的参数”。为什么?通常情况下,人们希望尽快忘记编码,使用字符而不是它们的代码。无论如何,Unix参数可能是字节序列,但Windows参数不是,它们是字符序列。我认为您必须从
System.Environment
复制源文件-如果查看这些源文件,
getArgs
在最后一刻转换为系统编码,它将数据读取为“原始字节”。看起来您想要的代码已经存在,您想要的代码片段并没有作为函数导出。