使用with-open-gzip-file读取UTF-8压缩文件遇乱码问题求助
解决gzip-stream读取UTF-8压缩文件乱码问题
你遇到的乱码是因为gzip-stream:with-open-gzip-file默认使用的外部编码不是UTF-8,导致UTF-8字节被错误解码成了Latin-1(ISO-8859-1),所以出现了abéè这类乱码。
只需在调用with-open-gzip-file时显式指定:external-format :utf-8参数即可解决问题,修改后的测试代码如下:
CL-USER> (gzip-stream:with-open-gzip-file (in "test-utf8.txt.gz" :external-format :utf-8) (read-line in)) "abéè" NIL
with-open-file在多数Common Lisp实现中会自动适配或默认使用UTF-8编码,但gzip-stream包的这个宏没有继承该行为,必须手动指定外部编码,才能保证UTF-8字符被正确解码。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

