外部からの入力バイト列を文字列にしたい(文字コード変換含む) - lisp-cookbook-ja/common-lisp GitHub Wiki
Webページを取得しページを加工することを考えてみます。 CLでは処理系依存で文字コードを指定し扱う方法がそれぞれありますが、Webページ取得の場合にはエンコードを決め打ちにしてしまうと、指定したエンコードのページしか正しく処理できないことになってしまいます。これでは、現在の日本のようにエンコードが複数使われている状況では不便です。
下記の例ではonjo氏作のjpパッケージを利用し、文字エンコーディングを自動判別してバイト列を文字列に変換しています。
jpパッケージの詳細についてはCommon Lisp と 日本語 と 文字コードを参照して下さい
(let ((vec (drakma:http-request "http://tips.lisp-users.org/common-lisp/" :force-binary T)))
(jp:decode vec :guess))
;=> "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"
; \"http://www.w3.org/TR/html4/loose.dtd\">
; <html><head><title>逆引きCommonLisp</title
; ... "
- '''decode''' ''vector external-format'' &key ''(start 0) end''