weblocks-clsql-demo use chinese word error

55 views
Skip to first unread message

zhiguolv

unread,
Feb 17, 2013, 9:12:31 PM2/17/13
to webl...@googlegroups.com
hello,I am a beginner to use weblocks. I have spent several days to make
weblocks-clsql-demo work, My database is MySQL.But when I add company
operation on the page(I input chinese word in the form), it show errors as
follows:OCTETS-ENCODING-ERROR: Unable to encode character 26234 as :LATIN-1.
Could anyone enlight me to solving this problem?

Scott L. Burson

unread,
Feb 17, 2013, 10:28:20 PM2/17/13
to webl...@googlegroups.com

The first thing to check is the default encoding in your Lisp implementation.  Which Lisp are you using?  If it's SBCL, you can do

  (setq sb-impl::*default-external-format* :utf-8)

The second thing to check is the encoding being used by your database.  I don't know how this works with MySQL, but with PostgreSQL, it's possible to specify an encoding at the time you create a database.  Again, make sure it's UTF-8.

-- Scott

Scott L. Burson

unread,
Feb 17, 2013, 10:40:18 PM2/17/13
to webl...@googlegroups.com
On Sun, Feb 17, 2013 at 7:28 PM, Scott L. Burson <Sc...@ergy.com> wrote:
If it's SBCL, you can do

  (setq sb-impl::*default-external-format* :utf-8)

Oh, I should have added -- you should do this at the very beginning of your session, before any database connections are opened.  I put this form in ~/.sbclrc to accomplish that.

-- Scott
 

zhiguolv

unread,
Feb 25, 2013, 8:39:46 AM2/25/13
to webl...@googlegroups.com
Scott L. Burson <Scott@...> writes:

>
>
> On Sun, Feb 17, 2013 at 7:28 PM, Scott L. Burson <Scott-
djz18...@public.gmane.org> wrote:
>
>
> If it's SBCL, you can do
>   (setq sb-impl::*default-external-format* :utf-8)
>
>
>
> Oh, I should have added -- you should do this at the very beginning of your
session, before any database connections are opened.  I put this form in
~/.sbclrc to accomplish that.-- Scott 
>
>
> yes, I use SBCL. As Scott points,it can work now. thanks. But now another
porblem occurs. when I replace the English word "Next" with Chinese word "下一
步" in layout.lisp. I reset the ssession and refresh the page or visit the
URL "http://localhost:8080/weblocks-clsql-demo", the Chinese word encodes
error. If I want to produce a chinese web page. How can I achieve this?
>
> And I delete all the fasl files of weblocks-clsql-demo,reload it in slime,
this time compile errors occur as follows:

The variable Ï»¿ is unbound.
[Condition of type UNBOUND-VARIABLE]

Restarts:
0: [TRY-RECOMPILING] Recompile layout and try loading it again
1: [RETRY] Retry loading FASL for #<CL-SOURCE-FILE "weblocks-clsql-
demo" "src" "layout">.
2: [ACCEPT] Continue, treating loading FASL for #<CL-SOURCE-FILE "weblocks-
clsql-demo" "src" "layout"> as having been successful.
3: [ABORT] Give up on "weblocks-clsql-demo"
4: [RETRY] Retry SLIME REPL evaluation request.
5: [*ABORT] Return to SLIME's top level.
--more--
Backtrace:
0: (SYMBOL-VALUE Ï»¿)
1: (SB-FASL::LOAD-FASL-GROUP ..)
2: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-FASL::LOAD-AS-FASL))
3: ((FLET #:WITHOUT-INTERRUPTS-BODY-99879 :IN SB-THREAD::CALL-WITH-RECURSIVE-
LOCK))
4: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK ..)
5: (SB-FASL::LOAD-AS-FASL ..)
6: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) ..)
7: (LOAD ..)
8: (SB-IMPL::%MAP-FOR-EFFECT-ARITY-1 ..)
9: ((SB-PCL::FAST-METHOD ASDF:PERFORM (ASDF:LOAD-OP ASDF:CL-SOURCE-FILE)) ..)
10: ((SB-PCL::EMF ASDF:PERFORM) #<unavailable argument> #<unavailable
argument> #<ASDF:LOAD-OP (:VERBOSE NIL) {28B2CF01}> #<ASDF:CL-SOURCE-
FILE "weblocks-clsql-demo" "src" "layout">)
11: ((SB-PCL::FAST-METHOD ASDF::PERFORM-WITH-RESTARTS (ASDF:LOAD-OP ASDF:CL-
SOURCE-FILE)) ..)
12: ((SB-PCL::FAST-METHOD ASDF::PERFORM-WITH-RESTARTS :AROUND (T T)) ..)
13: ((LAMBDA () :IN ASDF::PERFORM-PLAN))
14: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-C::%WITH-COMPILATION-
UNIT))
15: ((FLET #:WITHOUT-INTERRUPTS-BODY-99879 :IN SB-THREAD::CALL-WITH-RECURSIVE-
LOCK))
16: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK ..)
17: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
18: ((SB-PCL::FAST-METHOD ASDF::PERFORM-PLAN (LIST)) ..)
19: ((LAMBDA () :IN ASDF:OPERATE))
20: (ASDF::CALL-WITH-SYSTEM-DEFINITIONS #<CLOSURE (LAMBDA # :IN ASDF:OPERATE)
{28021D6D}>)
21: ((SB-PCL::FAST-METHOD ASDF:OPERATE (T T)) #<unused argument> #<unused
argument> ASDF:LOAD-OP "weblocks-clsql-demo" :VERBOSE NIL)
22: ((SB-PCL::EMF ASDF:OPERATE) #<unused argument> #<unused argument>
ASDF:LOAD-OP "weblocks-clsql-demo" :VERBOSE NIL)
23: (QUICKLISP-CLIENT::CALL-WITH-MACROEXPAND-PROGRESS #<CLOSURE (LAMBDA # :IN
QUICKLISP-CLIENT::APPLY-LOAD-STRATEGY) {28021B75}>)
24: (QUICKLISP-CLIENT::AUTOLOAD-SYSTEM-AND-DEPENDENCIES "weblocks-clsql-
demo" :PROMPT NIL)
25: ((SB-PCL::FAST-METHOD QL-IMPL-UTIL::%CALL-WITH-QUIET-COMPILATION (T
T)) ..)
26: ((SB-PCL::FAST-METHOD QL-IMPL-UTIL::%CALL-WITH-QUIET-COMPILATION :AROUND
(QL-IMPL:SBCL T)) ..)
27: ((SB-PCL::FAST-METHOD QUICKLISP-CLIENT:QUICKLOAD (T)) #<unused argument>
#<unused argument> #<unavailable argument> :PROMPT NIL :VERBOSE NIL)
28: (QL-DIST::CALL-WITH-CONSISTENT-DISTS #<CLOSURE (LAMBDA # :IN QUICKLISP-
CLIENT:QUICKLOAD) {27DA0AC5}>)
29: (SB-INT:SIMPLE-EVAL-IN-LEXENV (QUICKLISP-CLIENT:QUICKLOAD "weblocks-clsql-
demo") #<NULL-LEXENV>)
30: (EVAL (QUICKLISP-CLIENT:QUICKLOAD "weblocks-clsql-demo"))
31: (SWANK::EVAL-REGION "(ql:quickload \"weblocks-clsql-demo\")\n")
32: ((LAMBDA () :IN SWANK::REPL-EVAL))
33: (SWANK::TRACK-PACKAGE #<CLOSURE (LAMBDA # :IN SWANK::REPL-EVAL) {27DA078D}
>)
34: (SWANK::CALL-WITH-RETRY-RESTART "Retry SLIME REPL evaluation request."
#<CLOSURE (LAMBDA # :IN SWANK::REPL-EVAL) {27DA071D}>)
35: (SWANK::CALL-WITH-BUFFER-SYNTAX NIL #<CLOSURE (LAMBDA # :IN SWANK::REPL-
EVAL) {27DA0705}>)
36: (SWANK::REPL-EVAL "(ql:quickload \"weblocks-clsql-demo\")\n")
37: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:LISTENER-EVAL "(ql:quickload
\"weblocks-clsql-demo\")\n") #<NULL-LEXENV>)
38: (EVAL (SWANK:LISTENER-EVAL "(ql:quickload \"weblocks-clsql-demo\")\n"))
39: (SWANK:EVAL-FOR-EMACS (SWANK:LISTENER-EVAL "(ql:quickload \"weblocks-
clsql-demo\")\n") "COMMON-LISP-USER" 117)
40: (SWANK::PROCESS-REQUESTS NIL)
41: ((LAMBDA () :IN SWANK::HANDLE-REQUESTS))
42: ((LAMBDA () :IN SWANK::HANDLE-REQUESTS))
43: (SWANK-BACKEND::CALL-WITH-BREAK-HOOK #<FUNCTION SWANK:SWANK-DEBUGGER-
HOOK> #<CLOSURE (LAMBDA # :IN SWANK::HANDLE-REQUESTS) {266180C5}>)
44: ((FLET SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK :IN "e:/lisp/emacs-23.3/site-
lisp/slime/swank-sbcl.lisp") ..)
45: (SWANK::CALL-WITH-BINDINGS ..)
46: (SWANK::HANDLE-REQUESTS #<SWANK::MULTITHREADED-CONNECTION {276817B9}> NIL)
47: ((FLET #:WITHOUT-INTERRUPTS-BODY-239701 :IN SB-THREAD:MAKE-THREAD))
48: ((FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD:MAKE-THREAD))
49: ((FLET #:WITHOUT-INTERRUPTS-BODY-99850 :IN SB-THREAD::CALL-WITH-MUTEX))
50: (SB-THREAD::CALL-WITH-MUTEX ..)
51: (SB-THREAD::INITIAL-THREAD-FUNCTION)
52: ("foreign function: call_into_lisp {426ECD}")

Could anyone give me help?

tong

unread,
Jun 23, 2013, 10:54:42 AM6/23/13
to webl...@googlegroups.com
zhiguolv <lv1978@...> writes:

hi,Now the Chinese word in the web page can be shown correctly. howerver,
I use clsql-sys:create-view-from-class to create a table into mysql
database, which contains chinese field. the encoding character format is
utf-8 in sbcl and mysql. The error as follows occur when I use create-view-
from-class.
c-string decoding error(:external format :utf-8)
This problem is related with the chinese field name in def-view-class
definition. How to solve it? Could anyone give me help? I want to access
the chinese table in mysql database.

o_z

unread,
Jun 24, 2013, 5:31:53 AM6/24/13
to webl...@googlegroups.com, lv1...@163.com
Could you give code snippet which reproduces bug ?

воскресенье, 23 июня 2013 г., 17:54:42 UTC+3 пользователь tong написал:

tong

unread,
Jun 24, 2013, 10:37:27 AM6/24/13
to webl...@googlegroups.com
o_z <olexiy.z@...> writes:
> Could you give code snippet which reproduces bug ?воскресенье, 23 июня
2013 г., 17:54:42 UTC+3 пользователь tong написал:
> zhiguolv <lv1978 <at> ...> writes:
(1) --------Part of the student model file content is as follows:
;;; Model
(clsql:def-view-class student ()
((id :accessor stu-id
:db-kind :key
:db-constraints (:not-null :unique)
:type integer)
(name :initarg :name
:accessor stu-name
:db-constraints :not-null
:type string)
(性别 :initarg :性别
:accessor stu-sex
:type string)
))
(2)-------- I use quickload to load the package named myweb in slime+sbcl,
the commands are as follows:
CL-USER> (ql:quickload "myweb")
To load "myweb":
Load 1 ASDF system:
myweb
; Loading "myweb"
.......
("myweb")
CL-USER> (weblocks:start-weblocks)
#<WEBLOCKS:WEBLOCKS-ACCEPTOR (host *, port 8080)>
(#<MYWEB::MYWEB {262A2FC9}>)
CL-USER> (in-package myweb)
#<PACKAGE "MYWEB">
MYWEB> (clsql-sys:create-view-from-class 'student :database *default-
store*)
compiling file "e:/Lisp/sbcl/site/clsql/uffi/clsql-uffi-loader.lisp"
(written 19 DEC 2012 10:08:44 AM):
; compiling (IN-PACKAGE #:CLSQL-UFFI)
; compiling (DEFUN FIND-AND-LOAD-FOREIGN-LIBRARY ...)
; compiling (DEFVAR *CLSQL-UFFI-LIBRARY-FILENAMES* ...)
; compiling (DEFVAR *CLSQL-UFFI-SUPPORTING-LIBRARIES* ...)
; compiling (DEFVAR *UFFI-LIBRARY-LOADED* ...)
; compiling (DEFUN LOAD-UFFI-FOREIGN-LIBRARY ...)
; compiling (LOAD-UFFI-FOREIGN-LIBRARY)
; e:/Lisp/sbcl/site/clsql/uffi/ASDF-TMP-clsql-uffi-loader.fasl written
; compilation finished in 0:00:00.312
; compiling file "e:/Lisp/sbcl/site/clsql/uffi/clsql-uffi.lisp" (written
19 DEC 2012 10:08:44 AM):
; compiling (IN-PACKAGE #:CLSQL-UFFI)
; compiling (DEFUN CANONICALIZE-TYPE-LIST ...)
; compiling (DEF-FUNCTION "atoi" ...)
; compiling (DEF-FUNCTION ("strtoul" C-STRTOUL) ...)
; compiling (DEF-FUNCTION "atol" ...)
; compiling (DEF-FUNCTION "atof" ...)
; compiling (DEF-FUNCTION "atol64" ...)
; compiling (DEF-CONSTANT +2^32+ ...)
; compiling (DEF-CONSTANT +2^64+ ...)
; compiling (DEF-CONSTANT +2^32-1+ ...)
; compiling (DEFMACRO MAKE-64-BIT-INTEGER ...)
; compiling (DEFMACRO MAKE-128-BIT-INTEGER ...)
; compiling (DEFMACRO SPLIT-64-BIT-INTEGER ...)
; compiling (DEF-TYPE CHAR-PTR-DEF ...)
; compiling (DEFUN STRTOUL ...)
; compiling (DEFUN CONVERT-RAW-FIELD ...)
; e:/Lisp/sbcl/site/clsql/uffi/ASDF-TMP-clsql-uffi.fasl written
; compilation finished in 0:00:01.000

(3) ----------the following errors occured, the detail of which is:
c-string decoding error (:external-format :UTF-8):
the octet sequence 1 cannot be decoded.
[Condition of type SB-INT:C-STRING-DECODING-ERROR]
Restarts:
0: [RETRY] Retry SLIME REPL evaluation request.
1: [*ABORT] Return to SLIME's top level.
2: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread"
RUNNING {24FC7F49}>)
Backtrace:
0: (SB-INT:C-STRING-DECODING-ERROR :UTF-8 1)
1: (SB-IMPL::READ-FROM-C-STRING/UTF-8 #.(SB-SYS:INT-SAP #X02E64147)
CHARACTER)
2: ((SB-PCL::FAST-METHOD CLSQL-SYS:DATABASE-EXECUTE-COMMAND (T CLSQL-
MYSQL:MYSQL-DATABASE)) ..)
3: ((SB-PCL::EMF CLSQL-SYS:DATABASE-EXECUTE-COMMAND) ..)
4: ((SB-PCL::EMF CLSQL-SYS:DATABASE-EXECUTE-COMMAND) ..)
5: ((SB-PCL::FAST-METHOD CLSQL-SYS:EXECUTE-COMMAND (STRING)) ..)
6: ((SB-PCL::FAST-METHOD CLSQL-SYS:EXECUTE-COMMAND (CLSQL-SYS::%SQL-
EXPRESSION)) ..)
7: ((SB-PCL::FAST-METHOD CLSQL-SYS::%INSTALL-CLASS (CLSQL-SYS::STANDARD-
DB-CLASS T)) ..)
8: (CLSQL-SYS:CREATE-VIEW-FROM-CLASS STUDENT :DATABASE #<CLSQL-SYS:FLUID-
DATABASE localhost/supportdb/admin OPEN {2646F979}> :TRANSACTIONS T)
9: (SB-INT:SIMPLE-EVAL-IN-LEXENV (CLSQL-SYS:CREATE-VIEW-FROM-
CLASS 'STUDENT :DATABASE *DEFAULT-STORE*) #<NULL-LEXENV>)
10: (EVAL (CLSQL-SYS:CREATE-VIEW-FROM-CLASS 'STUDENT :DATABASE *DEFAULT-
STORE*))
11: (SWANK::EVAL-REGION "(clsql-sys:create-view-from-
class 'student :database *default-store*)\n")
Locals:
SB-DEBUG::ARG-0 = "(clsql-sys:create-view-from-
class 'student :database *default-store*)\n"
12: ((LAMBDA () :IN SWANK::REPL-EVAL))
13: (SWANK::TRACK-PACKAGE #<CLOSURE (LAMBDA # :IN SWANK::REPL-EVAL)
{266CF51D}>)
14: (SWANK::CALL-WITH-RETRY-RESTART "Retry SLIME REPL evaluation
request." #<CLOSURE (LAMBDA # :IN SWANK::REPL-EVAL) {266CF4AD}>)
15: (SWANK::CALL-WITH-BUFFER-SYNTAX NIL #<CLOSURE (LAMBDA # :IN
SWANK::REPL-EVAL) {266CF495}>)
16: (SWANK::REPL-EVAL "(clsql-sys:create-view-from-
class 'student :database *default-store*)\n")
17: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:LISTENER-EVAL "(clsql-sys:create-
view-from-class 'student :database *default-store*)\n") #<NULL-LEXENV>)
18: (EVAL (SWANK:LISTENER-EVAL "(clsql-sys:create-view-from-
class 'student :database *default-store*)\n"))
19: (SWANK:EVAL-FOR-EMACS (SWANK:LISTENER-EVAL "(clsql-sys:create-view-
from-class 'student :database *default-store*)\n") "MYWEB" 10)
20: (SWANK::PROCESS-REQUESTS NIL)
21: ((LAMBDA () :IN SWANK::HANDLE-REQUESTS))
22: ((LAMBDA () :IN SWANK::HANDLE-REQUESTS))
23: (SWANK-BACKEND::CALL-WITH-BREAK-HOOK #<FUNCTION SWANK:SWANK-DEBUGGER-
HOOK> #<CLOSURE (LAMBDA # :IN SWANK::HANDLE-REQUESTS) {24FD00CD}>)
24: ((FLET SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK :IN "e:/Lisp/emacs-
23.3/site-lisp/slime/swank-sbcl.lisp") ..)
25: (SWANK::CALL-WITH-BINDINGS ..)
26: (SWANK::HANDLE-REQUESTS #<SWANK::MULTITHREADED-CONNECTION {248F0A01}>
NIL)
27: ((FLET #:WITHOUT-INTERRUPTS-BODY-239701 :IN SB-THREAD:MAKE-THREAD))
28: ((FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD:MAKE-THREAD))
29: ((FLET #:WITHOUT-INTERRUPTS-BODY-99850 :IN SB-THREAD::CALL-WITH-
MUTEX))
30: (SB-THREAD::CALL-WITH-MUTEX ..)
31: (SB-THREAD::INITIAL-THREAD-FUNCTION)
32: ("foreign function: call_into_lisp {426ECD}")

I think this is caused by the chinese field introduced in def-view-class
student()

o_z

unread,
Jun 26, 2013, 4:05:28 AM6/26/13
to webl...@googlegroups.com, lv1...@163.com
I've answered here https://groups.google.com/forum/#!topic/weblocks/CsCNcLii6ZM

понедельник, 18 февраля 2013 г., 4:12:31 UTC+2 пользователь zhiguolv написал:

zhiguolv

unread,
Jun 26, 2013, 7:24:45 PM6/26/13
to webl...@googlegroups.com
thank you, o_z. As you said,it can work now.
the following statement is the key
(clsql:query "SET NAMES utf8;" :database *sql-store*)





Reply all
Reply to author
Forward
0 new messages