<div dir="ltr">Hello,<br><br> I'm new to Elephant. <br> My computer environment is: FreeBSD 6.2, Elephant 0.9.1, SBCL 1.0.13, BDB 4.5. ( All elephant test cases for BDB are passed. ) <br> I met some problems related to Unicode.<br>
<br> 1. Unicode contained in a vector can not be serialized. <br> This issue is found when I submit a form to hunchentoot, which uses vector to store the submitted input string instead of simple array.<br>
<br> Following codes illustrate the problem.<br><br> (defpclass user ()<br> ((login-name :accessor user-login-name :initarg :login-name :index t)<br> (nick-name :accessor user-nick-name :initarg :nick-name :index t)<br>
(password :accessor user-password :initarg :password)))<br><br> <br> (defvar *login-name1* nil)<br> (setf *login-name1* (make-array 9 :element-type 'character :adjustable t :fill-pointer 0))<br>
(vector-push #\u5c0f *login-name1*)<br> (vector-push #\u5c0f *login-name1*)<br> (vector-push #\u660e *login-name1*)<br><br> (make-instance 'user :login-name *login-name1* :nick-name "Richard" :password "123")<br>
<br> Error message:<br> ---------------------------------------------<br> The value "ССÃ÷" is not of type SIMPLE-STRING.<br> [Condition of type TYPE-ERROR]<br><br> Backtrace:<br>
0: (ELEPHANT-SERIALIZER2::SERIALIZE-TO-UTF16LE #<unavailable argument> #<unavailable argument>)<br> 1: (ELEPHANT-SERIALIZER2::SERIALIZE-STRING #<unavailable argument> #<unavailable argument>)<br>
2: (ELEPHANT-SERIALIZER2::SERIALIZE #<unavailable lambda list>)<br> <br> Changing the vector to simple array can work around it:<br><br> (make-instance 'user :login-name (copy-seq *login-name1*) :nick-name "Richard" :password "123")<br>
<br> Is it a known limitation ?<br><br> 2. If the number of characters is odd, the Unicode string can not be used for index,<br><br> (get-instance-by-value 'user 'login-name (copy-seq *login-name1*))<br>
=> nil <br> (get-instance-by-value 'user 'nick-name "Richard")<br> => > #<USER oid:5><br> <br> If I change *login-name1* to 2, or 4 Unicode characters, the get-instance-by-value works.<br>
But, if it contains 3 or 5 characters, the get-instance-by-value always returns nil.<br> <br> Does anyone meet the similar problem before?<br><br>Thanks<br>Li<br> <br> <br></div>