2017-09-17 39 views
1

在sbcl中,当使用例如utf-8对字符串进行编码时,是否有办法将它编码为字节向量而不进行实际I/O,类似于CLISP的sbcl:在没有实际I/O的情况下对字符进行编码和解码

(EXT:CONVERT-STRING-TO-BYTES string encoding &KEY :START :END) 

,并进行解码的东西,如CLISP的

(EXT:CONVERT-STRING-FROM-BYTES vector encoding &KEY :START :END) 

我可以将数据写入到与所需的编码文件,然后使用重读它粗暴地接近这一点:ISO-8859-1,但这似乎是一个愚蠢的切入点。

+2

'SB-EXT:STRING-TO-OCTETS'和'SB-EXT:OCTETS-TO-STRING'。 – jkiiski

+0

@jkiiski完美!如果您选择将此作为正式答案,我很乐意接受并接受它。 –

回答

3

SBCL对此具有功能SB-EXT:STRING-TO-OCTETSSB-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" 
2

对于便携式代码,使用babel,购自Quicklisp,其具有string-to-octetsoctets-to-strings像SBCL。

相关问题