Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Utf 8 babel:octets to string抛出无效的-UTF8-CONTINUATION-BYTE_Utf 8_Lisp_Common Lisp_Sbcl_Babeljs - Fatal编程技术网

Utf 8 babel:octets to string抛出无效的-UTF8-CONTINUATION-BYTE

Utf 8 babel:octets to string抛出无效的-UTF8-CONTINUATION-BYTE,utf-8,lisp,common-lisp,sbcl,babeljs,Utf 8,Lisp,Common Lisp,Sbcl,Babeljs,我正在编写一个lisp程序来获取一个中文网站的网页,我遇到了从二进制流解析中文单词的问题,我已经有了一个包含整个网页的向量(无符号字节8),但当我把它放到babel:octets to string时,它抛出了一个异常 (setf缓冲区(巴别塔:八位字节到字符串缓冲区:编码:utf-8)) 例外情况是: 非法:从437位置开始的UTF-8字符。[情况 键入BABEL-ENCODINGS:INVALID-UTF8-CONTINUATION-BYTE] 我发现当它遇到一个中文单词时,它必须扔掉这个例

我正在编写一个lisp程序来获取一个中文网站的网页,我遇到了从二进制流解析中文单词的问题,我已经有了一个包含整个网页的向量(无符号字节8),但当我把它放到babel:octets to string时,它抛出了一个异常

(setf缓冲区(巴别塔:八位字节到字符串缓冲区:编码:utf-8))

例外情况是:

非法:从437位置开始的UTF-8字符。[情况 键入BABEL-ENCODINGS:INVALID-UTF8-CONTINUATION-BYTE]


我发现当它遇到一个中文单词时,它必须扔掉这个例外。如何解决此问题?

错误消息说明了一切-数据中存在无效的UTF-8字节序列


此错误最可能的原因是页面文本本身不是用UTF-8编码的,而是其他一些中文文本编码。您应该检查HTML“META HTTP-EQUIV”标记和“Content Type”HTTP响应头的编码。

谢谢,我检查了编码,发现它与您所说的一样,页面是用GBK编码的,但是我如何处理GBK文本,我应该编写自己的解码方法吗?巴贝尔似乎不支持GBK。最好的方法是向Babel添加GBK支持。但作为一个即时解决方案,您可以使用Lisp实现提供的解码功能。例如,在SBCL中,您可以使用
sb ext:octets来字符串
函数;在Clozure CL中,您可以使用
ccl:decode string from octets
非常感谢,我现在正在编写一个补丁,使Babel支持GBK。