On 2009-03-20 12:13, abhi wrote: > On Mar 20, 11:03 am, "Martin v. Löwis" <mar...@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/ -- http://mail.python.org/mailman/listinfo/python-list