中国語のWebページを取得するためのlispプログラムを作成しています。バイナリストリームから中国語の構文解析に関する問題を抱えています。すでにページ全体を含む(unsigned-byte 8)のベクトルを持っていますが、それをbabel:octets-to-stringに置くと、例外がスローされます。babel:オクテットから文字列への無効化INVALID-UTF8-CONTINUATION-BYTE
(setfの緩衝液(バベル:オクテットツー列バッファ:エンコーディング:UTF-8))
例外がある:
不正:始まるUTF-8文字位置437 [ 型BABEL - エンコーディングの条件:INVALID-UTF8継続-BYTE]
私はそれが中国語の単語を満たしたときに、それはMUSという泉この例外をスローしません。どうすれば解決できますか?
おかげさまで、エンコードをチェックして、あなたの言うとおりにページがGBKでエンコードされていましたが、GBKテキストを処理するにはどうすればよいですか? –
BabelはGBKをサポートしていないようです。最良の方法は、GBKサポートをBabelに追加することです。しかし、即時の解決策として、Lisp実装提供のデコード機能を使用することができます。たとえば、SBCLで 'sb-ext:octets-to-string'関数を使用できます。 Clozure CLで 'ccl:decode-string-from-octets'を使うことができます –
ありがとう、私は今、BabelがGBKをサポートするようにパッチを書いています。 –