> Thanks for the reply. Type S gives "not a python string", type B gives 
> "wrong type for ByteProp". Here is the output:
> 
>  >>> db = metakit.storage("test.db", 2)
>  >>> v = db.getas("test[name:B,test:S]")
>  >>> v.append(name='abc',test='def')
> 0
>  >>> for row in v: print row.name, row.test
> ...
> abc def
>  >>> v.append(name=u'abc',test='def')
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> TypeError: wrong type for ByteProp
>  >>> v.append(name='abc',test=u'def')
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> TypeError: not a Python string

You are sending a Python unicode object.

You need to send an array of bytes.

------------------------------------------------------------------------

import metakit

db = metakit.storage()
people = db.getas('[name:S,namei:B]')

u16be = '\x00\x4a\x00\x6f\x00\xe5\x00\x6f'

people.append(name='Joao',namei=u16be)

print people[0].name
print list(people[0].name)

print people[0].namei
print list(people[0].namei)

print people[0].namei.decode('utf-16be')

------------------------------------------------------------------------

C:\>unimeta
Joao
['J', 'o', 'a', 'o']
 J o s o
['\x00', 'J', '\x00', 'o', '\x00', '\xe5', '\x00', 'o']
Joåo

------------------------------------------------------------------------

This prints correctly in DOS. I think it auto-converts to cp437 for
output. When I copy it into the clipboard it stores in some other
format... when I paste into my mail client "Becky" it may use even
some other format, and when it gets to you, perhaps even another...

The third line " J o s o" is already mangled away from what I see
in the DOS shell. The final line looks good, as å is a common char
in codecs, but I don't think I can say what it will look like in
your clients.

-- 
 kai

_____________________________________________
Metakit mailing list  -  Metakit@equi4.com
http://www.equi4.com/mailman/listinfo/metakit

Reply via email to