[cl-rdbms-devel] hu.dwim.rdbms.oracle-utf-problems-8

Marshall McLuhan marshall.mcluhan at gmx.net
Wed Nov 3 18:52:19 UTC 2010


 

>>> > 12:20 0           RDBMS DRIBBLE Convert from 5, size is 90, content:
>>> > 66 00 6F 00 6F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>>
>>>
>>> this data is utf-16, babel can deal with that, too.
>>>
>>> i'm looking into installing oracle now, so that i can test it myself...
>>>
>>
>> Hm, the connection encoding is UTF-16. SBCL doesn't support UTF-16.
>> Therefore I have to convert
>> the UTF-16 string with babel to UTF-8 if babel does such a thing.
>
>
>reading this makes me think that you don't have a clear model of lisp
>strings/unicode/encodings.

I probably don't, yes.

>
>i don't remember reading this article, but a quick glance looks
>promising: http://www.joelonsoftware.com/articles/Unicode.html
>

Interesting read, I saw this once but didn't read it. But I did now.

>in short: you need to convert between lisp strings and byte arrays,
>sending/receiving byte arrays to/from the database. the encoding
>needed for OCI, oracle's C interface, is utf-16.
>

Is getting strings in utf-16 at this point a feature or a bug?
Asked another way: Am I supposed to convert utf-16 strings to lisp strings or should that already be in there?

If it were not a bug I would get a byte array instead of a utf-16 string?
Error messages don't show up correctly either e.g. for violations of unique constraints?

On the other hand, this being a feature would makes sense when thinking about where the data is supposed to be seen,
the major web browsers. Assuming the major web browsers support utf-16.

But then, how do I go about manipulation utf-16 string data with sbcl.
Do I have to take a harder look at babel or flexi-streams?


>utf-8 is nowhere in the picture (if not the encoding emacs/slime uses
>to communicate with the cl process).
>

Isn't sbcl able to use utf-8 to represent its lisp strings?




Babel isn't able to convert between utf-16 and utf-8, yet? Confusion reigns ...

ORACLE> (let ((octet-array (make-array 6 :element-type '(unsigned-byte 8)
                       :initial-contents (vector #X66 #X00 #X6F #X00 #X6F #X00))))
      (babel:octets-to-string octet-array :encoding :utf-8))
"f@^o@^o^@"

ORACLE>


Regards,
chris

>-- 
> attila
>
>
 

 


!DSPAM:4cd1af6448581812115720!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cl-rdbms-devel/attachments/20101103/52265aea/attachment.html>


More information about the cl-rdbms-devel mailing list