在sbcl中,当使用,例如:utf-8对字符串进行编码时,有没有办法将其编码为字节向量而不进行实际的I / O,类似于clisp的
(EXT:CONVERT-STRING-TO-BYTES string encoding &KEY :START :END)
并使用clisp的
进行解码(EXT:CONVERT-STRING-FROM-BYTES vector encoding &KEY :START :END)
我可以通过将数据写入具有所需编码的文件然后使用:iso-8859-1重新读取它来粗略地估计这一点,但这似乎是一个愚蠢的长切。
答案 0 :(得分:3)
SBCL的功能为SB-EXT:STRING-TO-OCTETS
和SB-EXT:OCTETS-TO-STRING
。
CL-USER> (sb-ext:string-to-octets "fööbär" :external-format :utf-8)
#(102 195 182 195 182 98 195 164 114)
CL-USER> (sb-ext:string-to-octets "fööbär" :external-format :iso-8859-1)
#(102 246 246 98 228 114)
CL-USER> (sb-ext:octets-to-string ** :external-format :utf-8)
"fööbär"
CL-USER> (sb-ext:octets-to-string ** :external-format :iso-8859-1)
"fööbär"
答案 1 :(得分:2)
对于可移植代码,请使用Quicklisp提供的babel
,其中string-to-octets
和octets-to-strings
类似于SBCL。