Implement UTF8-STRING->STRING.
authorChris Hanson <org/chris-hanson/cph>
Tue, 7 Mar 2006 19:56:25 +0000 (19:56 +0000)
committerChris Hanson <org/chris-hanson/cph>
Tue, 7 Mar 2006 19:56:25 +0000 (19:56 +0000)
v7/src/runtime/runtime.pkg
v7/src/runtime/unicode.scm

index e575a0e3edb12d8c39594bfbd9dec839772e5906..ee20de1c1d60fb940f9a70ed08de945063a45d9b 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: runtime.pkg,v 14.576 2006/03/07 06:40:24 cph Exp $
+$Id: runtime.pkg,v 14.577 2006/03/07 19:56:21 cph Exp $
 
 Copyright 1988,1989,1990,1991,1992,1993 Massachusetts Institute of Technology
 Copyright 1994,1995,1996,1997,1998,1999 Massachusetts Institute of Technology
@@ -4759,6 +4759,7 @@ USA.
          utf32-string-length
          utf32-string-valid?
          utf32-string?
+         utf8-string->string
          utf8-string->wide-string
          utf8-string-length
          utf8-string-valid?
index 73308ec42346e06bbdb4a300ef6bf6c8791c5bed..d670f6b9c7fb7ae547a5a6d86ffdd5b067e90d37 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: unicode.scm,v 1.25 2005/12/13 15:29:52 cph Exp $
+$Id: unicode.scm,v 1.26 2006/03/07 19:56:25 cph Exp $
 
 Copyright 2001,2003,2004,2005 Massachusetts Institute of Technology
 
@@ -1059,6 +1059,18 @@ USA.
                   (fix:or #x80 (fix:and (vector-8b-ref string i) #x3F)))
                  (loop (fix:+ i 1) (fix:+ i* 2))))))
       string*)))
+
+(define (utf8-string->string string #!optional start end)
+  (let ((input (open-input-string string start end)))
+    (port/set-coding input 'UTF-8)
+    (call-with-output-string
+      (lambda (output)
+       (let loop ()
+         (let ((c (read-char input)))
+           (if (not (eof-object? c))
+               (begin
+                 (write-char c output)
+                 (loop)))))))))
 \f
 (define (validate-utf8-char string start end)