[IronPython] Embedding & Charsets

Igor Elyas igor_elyas at hotmail.com
Thu Mar 26 08:38:40 CET 2009


Thanks for explaining.

--------------------------------------------------
From: "Michael Foord" <fuzzyman at voidspace.org.uk>
Sent: Thursday, March 26, 2009 1:33 AM
To: "Discussion of IronPython" <users at lists.ironpython.com>
Subject: Re: [IronPython] Embedding & Charsets

> Igor Elyas wrote:
>> Interesting info:
>> 1. Calling unicode('russian symbols') throws "'ascii' codec can't decode 
>> byte 0 in position 0: ordinal not in range"
> In IronPython calling unicode is the same as calling str. Calling unicode 
> on a bytestring with non-ascii characters in it would also blow up in 
> CPython.
>
> Michael
>
>> 2.
>> IronPython 2.0 (2.0.0.0) on .NET 2.0.50727.3082
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> str(u''russian symbols'.encode('cp1251'))
>> Traceback (most recent call last):
>>  File "<stdin>", line 1, in <module>
>>  File "mscorlib", line unknown, in GetString
>>  File "mscorlib", line unknown, in GetChars
>>  File "mscorlib", line unknown, in Fallback
>>  File "mscorlib", line unknown, in Throw
>> UnicodeDecodeError: ('unknown', u'\xef', 0, 1, '')
>>
>> Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit 
>> (Intel)] on win32
>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> str(u''russian symbols'.encode('cp1251'))
>> '\xef\xf0\xe8\xe2\xe5\xf2'
>>
>> --------------------------------------------------
>> From: "Michael Foord" <fuzzyman at voidspace.org.uk>
>> Sent: Wednesday, March 25, 2009 10:03 PM
>> To: "Discussion of IronPython" <users at lists.ironpython.com>
>> Subject: Re: [IronPython] Embedding & Charsets
>>
>>> Igor Elyas wrote:
>>>> Ops
>>>>  Deep in code on returned value  used Python str() function and looks 
>>>> like:
>>>>  str(self._reader.GetString(self._idx))
>>>>
>>>
>>> You can't call str on a string if it contains non-ascii characters. :-)
>>>
>>> (and why would you need to...)
>>>
>>> Michael
>>>
>>>> That correct situation ?
>>>>
>>>> *From:* Igor Elyas <mailto:igor_elyas at hotmail.com>
>>>> *Sent:* Wednesday, March 25, 2009 9:17 PM
>>>> *To:* Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>>>> *Subject:* [IronPython] Embedding & Charsets
>>>>
>>>> Hello
>>>>  I'm use IronPython 2.0.1 as embedded interpreter for read data from 
>>>> database.
>>>> Code for create Engine:
>>>>  fEngine = Python.CreateEngine();
>>>>             Ops = fEngine.CreateOperations();
>>>>             // core libs
>>>>             fEngine.Runtime.LoadAssembly(typeof(Decimal).Assembly);
>>>>             fEngine.Runtime.LoadAssembly(typeof(IValue).Assembly); // 
>>>> loading ADO.NET driver assemblies
>>>>             LoadAssemblies(from v in 
>>>> EtlBaseCfg.BaseCfg.Element("dlls").Elements("dll") select v.Value);
>>>>  After that, I use generated Ipy class for read one value from specific 
>>>> IDbDataReader:
>>>>  from ETL.Common.pipes import IValuePipe
>>>> class SelectExtractor(IValuePipe):
>>>>     def __init__(self,adoreader,originId,storage):
>>>>         self._name = originId
>>>>         self._reader = adoreader
>>>>         self._idx = adoreader.GetOrdinal(self._name)
>>>>         self._transport = storage
>>>>     def Do(self, pydict):
>>>>         val = self._transport.Clone()
>>>>         if not self._reader.IsDBNull(self._idx):
>>>>             val.Data = self._reader.GetString(self._idx)
>>>>         if pydict.ContainsKey(self._name):
>>>>             pydict[self._name] = val
>>>>         else:
>>>>             pydict.Add(self._name,val)
>>>>  This operation return string with Russian symbols and I get Exception: 
>>>> "'ascii' codec can't decode byte 0 in position 0: ordinal not in range"
>>>> How I can enable unicode .NET strings ?
>>>> Looks like I not initialize IronPython correctly, because this code in 
>>>> Ipy console work fine with Russian charset (Russian Windows), but not 
>>>> sure about other charsets. I need use .NET unicode strings.
>>>>
>>>> Best regards
>>>>
>>>> Igor Elyas
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.ironpython.com
>>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>> ------------------------------------------------------------------------
>>>>
>>>>
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.ironpython.com
>>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>>
>>>
>>>
>>> -- 
>>> http://www.ironpythoninaction.com/
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.ironpython.com
>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.ironpython.com
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
> -- 
> http://www.ironpythoninaction.com/
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> 



More information about the Ironpython-users mailing list