UnicodeEncodeError: 'ascii' codec can't encode character u'\xb7' in position 13: ordinal not in range(128)

Chris Rebert clp2 at rebertia.com
Thu Jul 16 01:12:08 EDT 2009


> Chris Rebert-6 wrote:
>>
>> On Wed, Jul 15, 2009 at 9:34 PM, akhil1988<akhilanger at gmail.com> wrote:
>>>
>>> Hi!
>>>
>>> Can anyone please help me getting rid of this error:
>>> UnicodeEncodeError: 'ascii' codec can't encode character u'\xb7' in
>>> position
>>> 13: ordinal not in range(128)
>>>
>>> I am not a python programmer (though intend to start learning this
>>> wonderful
>>> language), I am just using a python script.
>>>
>>> After doing some search, I found that 0xb7 is a 'middle dot character'
>>> that
>>> is not interpreted by the python.
>>> Even after inserting text = text.replace('\u00b7', '') in the script, the
>>> problem still persists.
>>>
>>> Can anyone please tell me the easiest way to get rid of this?
>>
>> We'll need the full error traceback. The error message at the end is
>> just not enough information.
>> As to fixing it, google for "UnicodeEncodeError". You should find
>> about a million mailinglist threads on it.
On Wed, Jul 15, 2009 at 10:05 PM, akhil1988<akhilanger at gmail.com> wrote:
>
> Well,
> All I get is this traceback:
>
> File "./customWikiExtractor.py", line 492, in ?
>     main()
> File "./customWikiExtractor.py", line 480, in main
>    print >> sys.stdout, 'line: %s' % line
> UnicodeEncodeError: 'ascii' codec can't encode character u'\xb7' in position
> 13: ordinal not in range(128)
>
> I am giving a string to the python code as input, and python processes it
> like this:
>
> line = line.decode('utf-8').strip()
>
> After this when I do,
> print >> sys.stdout, 'line: %s' % line
> I get this Unicode error.

Try this instead (the ">> sys.stdout" part is redundant):
print (u'line: %s' % line).encode('utf8')
#if your system doesn't use UTF-8, change as necessary

Cheers,
Chris
-- 
http://blog.rebertia.com



More information about the Python-list mailing list