2012-10-05 50 views
0

我使用read-line来读取一些数据,我想将它转换为字节数组。 babel:string-to-octet大部分都适用,除非字符\字节较大(大于200),在这种情况下它会返回两个数字。作为一个例子,如果字符是ú使用babel:string-to-octet返回(195 185)而不是250这正是我正在寻找的。我在babel中尝试了一些编码,但它们都没有工作。在lisp中将字符串/字符转换为字节时遇到困难

如果我使用read-byteread-sequence它确实在250中读取。但出于向后兼容的原因,我只剩下使用read-line,我想知道是否有什么我丢失时使用babel:string-to-octet转换ú250

我使用ccl 1.8 btw。

+0

当然,我问一个问题的那一刻,我找到了答案。使用ccl:encode-string-to-octets解决了我的问题。我不确定ccl和babel版本有什么不同。也不知道是否应该删除这个问题,因为它已经解决了。 – WanderingPhd

+2

阅读字符编码,在你的情况下ISO-8859与UTF-8。 – starblue

+0

谢谢@starblue。我也尝试了大部分编码,但我想我没有尝试使用babel终于为我工作的ISO-8859-15。 – WanderingPhd

回答

0

大多数common-lisp实现支持超过256个字符。根据鸽子的原理,这意味着你不能将所有字符转换为单个字节。

如果您只是想将lisp内部字符代码0-255转换为字节,那么与char-code会做你想做的事情。但是,结果将由实现定义,因为实现不需要在内部使用任何特定编码。