Unicode problem in ucs4

M.-A. Lemburg mal at egenix.com
Fri Mar 20 13:47:29 CET 2009


On 2009-03-20 12:13, abhi wrote:
> On Mar 20, 11:03 am, "Martin v. Löwis" <mar... at v.loewis.de> wrote:
>>> Any idea on why this is happening?
>> Can you provide a complete example? Your code looks correct, and should
>> just work.
>>
>> How do you know the result contains only 't' (i.e. how do you know it
>> does not contain 'e', 's', 't')?
>>
>> Regards,
>> Martin
> 
> Hi Martin,
>  Here is the code:
> unicodeTest.c
> 
> #include<Python.h>
> 
> static PyObject *unicode_helper(PyObject *self,PyObject *args){
> 	PyObject *sampleObj = NULL;
>       	Py_UNICODE *sample = NULL;
> 
>       if (!PyArg_ParseTuple(args, "O", &sampleObj)){
>                 return NULL;
>       }
> 
> 	 // Explicitly convert it to unicode and get Py_UNICODE value
>       sampleObj = PyUnicode_FromObject(sampleObj);
>       sample = PyUnicode_AS_UNICODE(sampleObj);
>       wprintf(L"database value after unicode conversion is : %s\n",
> sample);

You have to use PyUnicode_AsWideChar() to convert a Python
Unicode object to a wchar_t representation.

Please don't make any assumptions on what Py_UNICODE maps
to and always use the the Unicode API for this. It is designed
to provide a portable interface and will not do more conversion
work than necessary.

>       return Py_BuildValue("");
> }
> 
> static PyMethodDef funcs[]={{"unicodeTest",(PyCFunction)
> unicode_helper,METH_VARARGS,"test ucs2, ucs4"},{NULL}};
> 
> void initunicodeTest(void){
> 	Py_InitModule3("unicodeTest",funcs,"");
> }
> 
> When i install this unicodeTest on python ucs2 wprintf prints whatever
> is passed eg
> 
> import unicodeTest
> unicodeTest.unicodeTest("hello world")
> database value after unicode conversion is : hello world
> 
> but it prints the following on ucs4 configured python:
> database value after unicode conversion is : h
> 
> Regards,
> Abhigyan
> --
> http://mail.python.org/mailman/listinfo/python-list

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Mar 20 2009)
>>> Python/Zope Consulting and Support ...        http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ...             http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________

::: Try our new mxODBC.Connect Python Database Interface for free ! ::::


   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611
               http://www.egenix.com/company/contact/



More information about the Python-list mailing list