[mod_python] UnicodeEncodeError using mod_python-3.0.3 with Python 2.3

David Fraser davidf at sjsoft.com
Thu Sep 18 22:25:46 EST 2003


Sean Gillies wrote:

> Hi,
>
> I'm running into problems with UnicodeEncodeErrors using  
> mod_python-3.0.3 with
> Python 2.3 on OS X.  Yes, I know I'm asking for trouble with this  
> combination,
> but I'm leery of replacing Apple's Python 2.2 (which doesn't work 
> with  mod_python).
> All in all, my application is working, but will eventually (and  
> unpredictably)
> stop and raise this error:
>
> Mod_python error: "PythonHandler mod_python.publisher"
>
> Traceback (most recent call last):
>
>   File  
> "/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site- 
> packages/mod_python/apache.py", line 332, in HandlerDispatch
>     result = object(req)
>
>   File  
> "/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site- 
> packages/mod_python/publisher.py", line 201, in handler
>     result = str(result)
>
> UnicodeEncodeError: 'ascii' codec can't encode character '\u3137' in  
> position 412: ordinal not in range(128)
>
> Anybody else using Python 2.3 who has seen this?  I really don't  
> understand the error,
> it's always '\u3137', and I'm _not_ (to my knowledge) using any 
> unicode  strings.  I am
> using Zope's Page Templates, but I don't see where the page templates  
> would be introducing
> '\u3137' (the hangul letter tikeut?!).
>
> My module is published with no problems on Linux (KRUD) with  
> mod_python-3.0.1 and
> Python 2.2.3, so I'm presently living with this problem on my 
> notebook  and counting
> on its absence on the server.
>
> Sean
>
> -- 

Try doing things like:
  if type(result) == unicode:
    result = result.encode('iso8859')
You can look up different encodings in the encodings module. The above 
works well for me...
I think you should be able to get the browser's desired encodings from 
the headers sent to the request.

Hope that helps
David




More information about the Mod_python mailing list