Changeset 2764
- Timestamp:
- 03/19/08 16:57:27 (10 months ago)
- Files:
-
- trunk/bknr/datastore/src/data/encoding-test.lisp (modified) (1 diff)
- trunk/bknr/datastore/src/data/encoding.lisp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/bknr/datastore/src/data/encoding-test.lisp
r2743 r2764 107 107 (make-array 10 :initial-element #\f :element-type 'character 108 108 :fill-pointer 3)) 109 110 (test:test string.decode-utf-8 111 (labels ((decode-string-from-octets (octets) 112 (flexi-streams:with-input-from-sequence (in octets) 113 (bknr.datastore::%decode-string in)))) 114 (test:is (string-equal "<=>" (decode-string-from-octets #(1 3 60 61 62)))) 115 (test:is (string-equal "<?>" (decode-string-from-octets #(1 3 60 188 62)))) 116 (test:for-all ((octets (test:gen-buffer))) 117 (test:finishes (decode-string-from-octets (concatenate 'vector (vector 1 (length octets)) octets)))))) 109 118 110 119 ;; #+(or (and sbcl sb-unicode) lispworks clisp acl) trunk/bknr/datastore/src/data/encoding.lisp
r2748 r2764 334 334 335 335 (defun %decode-string (stream) 336 #-allegro 337 (let* ((n (%decode-integer stream)) 338 (s (make-string n))) 339 (dotimes (i n) 340 (setf (char s i) (%read-char stream))) 341 s) 342 #+allegro 343 (let* ((n (%decode-integer stream)) 344 (s (make-array n))) 345 (excl::stream-read-sequence stream s) 346 #+nil (map 'string #'code-char s) 347 #-nil (coerce s 'string))) 336 (labels ((octets-to-string-safe (octets) ; and portable 337 (let ((flexi-streams:*substitution-char* #\?)) 338 (flexi-streams:octets-to-string octets :external-format #.(flexi-streams:make-external-format :utf-8)))) 339 (octets-to-string (octets) 340 #+sbcl (handler-case 341 #+sbcl(sb-ext:octets-to-string octets :external-format :utf-8) 342 (#+sbcl sb-impl::octet-decoding-error () 343 (octets-to-string-safe octets))) 344 #-sbcl (octets-to-string-safe octets))) 345 (let* ((n (%decode-integer stream)) 346 (buffer (make-array n :element-type '(unsigned-byte 8)))) 347 (assert (= n (read-sequence buffer stream))) 348 (octets-to-string buffer)))) 348 349 349 350 (defun %decode-symbol (stream)
