guess は文字コードの自動判別ライブラリである libguess-1.0 を common lisp 向けにポーティングしたものです.
LISPUSER Common Lisp と 日本語 と 文字コード の onjo さんが ポーティングしたライブラリを libguess v1.0 向けに修正し、日本語以外の文字コードの判別ができるようにしています.
-
quicklisp の path が通っているところにライブラリを落とす.
git clone git://github.com/zqwell/guess.git
-
quicklispでライブラリをロード.
(ql:quickload :guess)
文字コードを変換するために事前に iconv をインストールしておきます.
(ql:quickload :iconv)
-
iconv関数:
(iconv:iconv 変換元の文字コード 変換後の文字コード byte配列) => 変換後のbyte配列
CL-USER> (guess:CES-GUESS-FROM-VECTOR (string-to-octets "明日は明日の風が吹く") :jp)
:UTF-8
CL-USER> (guess:CES-GUESS-FROM-VECTOR (iconv:iconv :utf-8 :iso-2022-jp (string-to-octets "明日は明日の風が吹く")) :jp)
:JIS
CL-USER> (guess:CES-GUESS-FROM-VECTOR (iconv:iconv :utf-8 :euc-jp (string-to-octets "明日は明日の風が吹く")) :jp)
:EUC-JP
CL-USER> (guess:CES-GUESS-FROM-VECTOR (iconv:iconv :utf-8 :sjis (string-to-octets "明日は明日の風が吹く")) :jp)
:SJIS
CL-USER> (guess:CES-GUESS-FROM-VECTOR (string-to-octets "내일은 내일 바람이 분다") :kr)
:UTF-8
CL-USER> (guess:CES-GUESS-FROM-VECTOR (iconv:iconv :utf-8 :euc-kr (string-to-octets "내일은 내일 바람이 분다")) :kr)
:EUC-KR
CL-USER> (guess:CES-GUESS-FROM-VECTOR (iconv:iconv :utf-8 :johab (string-to-octets "내일은 내일 바람이 분다")) :kr)
:JOHAB
ces-guess-from-vector vector scheme => detected-encoding
-
vector---判別する文字列をbyte配列に変換したもの
-
scheme---識別する言語圏
日本語圏以外にも下記をサポートしています.- :jp -- japanese
- :tw -- taiwanese
- :cn -- chinese
- :kr -- korean
- :ru -- russian
- :ar -- arabic
- :tr -- turkish
- :gr -- greek
- :hw -- hebrew
- :pl -- polish
- :bl -- baltic
-
detected-encoding---自動判別した文字コード