[Sbcl-commits] CVS: sbcl/src/code/external-formats enc-cn-tbl.lisp,
NONE, 1.1 enc-cn.lisp, NONE, 1.1
From: NIIMI S. <sa...@us...> - 2006-12-27 00:37:35
|
Update of /cvsroot/sbcl/sbcl/src/code/external-formats In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv21977/src/code/external-formats Added Files: enc-cn-tbl.lisp enc-cn.lisp Log Message: 1.0.1.2: support for GBK external format (thanks to Chun Tian (binghe)) --- NEW FILE: enc-cn-tbl.lisp --- ;;; enc-cn-tbl.lisp: CP936(GBK) <=> UCS-2 table ;;; Chun Tian (binghe) <bin...@gm...> ;;; Sat Dec 23 23:42:11 CST 2006 ;;; This table comes from: ;;; http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ;;; ;;; Cut first 274 lines of CP936.TXT, got a CP936-only.TXT and do shell commands: ;;; $ cat CP936-only.TXT | awk -F "\t" '{printf(" (%s %s)\n",$1,$2);}' | sort | sed -e 's/0x/#x/g' > GBK2UCS.txt ;;; $ cat CP936-only.TXT | awk -F "\t" '{printf(" (%s %s)\n",$2,$1);}' | sort | sed -e 's/0x/#x/g' > UCS2GBK.txt ;;; and insert GBK2UCS.txt and UCS2GBK.txt to this file. (in-package "SB!IMPL") (define-multibyte-mapper *gbk-to-ucs-table* '( ;; begin, insert GBK2UCS.TXT here (emacs: C-x i GBK2UCS.TXT) (#x8140 #x4E02) (#x8141 #x4E04) (#x8142 #x4E05) (#x8143 #x4E06) [...43563 lines suppressed...] (#xFF52 #xA3F2) (#xFF53 #xA3F3) (#xFF54 #xA3F4) (#xFF55 #xA3F5) (#xFF56 #xA3F6) (#xFF57 #xA3F7) (#xFF58 #xA3F8) (#xFF59 #xA3F9) (#xFF5A #xA3FA) (#xFF5B #xA3FB) (#xFF5C #xA3FC) (#xFF5D #xA3FD) (#xFF5E #xA1AB) (#xFFE0 #xA1E9) (#xFFE1 #xA1EA) (#xFFE2 #xA956) (#xFFE3 #xA3FE) (#xFFE4 #xA957) (#xFFE5 #xA3A4) )) ;; end of *ucs-to-gbk-table* --- NEW FILE: enc-cn.lisp --- ;;; enc-cn.lisp: CP936 encoding support in SBCL ;;; Chun Tian (binghe) <bin...@gm...> ;;; Sat Dec 23 02:45:12 CST 2006 (in-package "SB!IMPL") ;;; GBK (declaim (inline ucs-to-gbk gbk-to-ucs mb-len-as-gbk gbk-continuation-byte-p)) (defun ucs-to-gbk (code) (declare (optimize speed (safety 0)) (type fixnum code)) (if (<= code #x7f) code (get-multibyte-mapper *ucs-to-gbk-table* code))) (defun gbk-to-ucs (code) (declare (optimize speed (safety 0)) (type fixnum code)) (if (<= code #x7f) code (get-multibyte-mapper *gbk-to-ucs-table* code))) (defun mb-len-as-gbk (code) (declare (optimize speed (safety 0)) (type (unsigned-byte 8) code)) (if (< code #x80) 1 2)) (defun gbk-continuation-byte-p (code) (declare (optimize speed (safety 0)) (type (unsigned-byte 8) code) (ignore code)) t) (define-multibyte-encoding :gbk (:gbk :cp936) ucs-to-gbk gbk-to-ucs mb-len-as-gbk gbk-continuation-byte-p) |