Issue1541671
Created on 2006-08-17 00:48 by zooko, last changed 2008-01-23 07:26 by gregory.p.smith.
|
msg60973 - (view) |
Author: Zooko O'Whielacronx (zooko) |
Date: 2006-08-17 00:48 |
|
with Python 2.5b3,
Here is an attempt to use a unicode filename with bsddb:
>>> dbe = db.DBEnv()
>>> dbe.open(u'\u03b3\u03bb\u03ce\u03c3\u03c32',
db.DB_CREATE | db.DB_INIT_MPOOL)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
__builtin__.UnicodeEncodeError: 'ascii' codec can't
encode characters in position 0-4: ordinal not in
range(128)
This is on Windows XP.
Here are some indications that the underlying SleepyCat
library ought to be able to do the right thing here:
http://www.sleepycat.com/xmldocs/ref/build_win/unicode.html
http://www.sleepycat.com/update/4.3.29/if.4.3.29.html
|
|
msg60974 - (view) |
Author: Martin v. Löwis (loewis) |
Date: 2006-08-18 07:18 |
|
Logged In: YES
user_id=21627
The sleepycat Unicode build procedure is not usable for
Python. The exposed API (db_open) etc. still operates on
char* strings. It then internally decodes them to WCHAR_T
before passing them to the Win32 API. Why they do this is
beyond me; I can't see any advantage in doing so (for the
users of the library, nothing changes).
It would be possible to change _bsddb to encode Unicode
strings automatically with the "mbcs" codec. Not sure
whether that would help in your case, as I don't know what
the system ANSI code page on your installation is.
|
|
| Date |
User |
Action |
Args |
| 2008-01-23 07:26:49 | gregory.p.smith | set | status: open -> closed priority: normal -> low resolution: wont fix |
| 2006-08-17 00:48:58 | zooko | create | |
|