Janwillem van Dijk schrieb am 24.11.2010 17:40:
On 11/24/2010 10:04 AM, Yao Ko wrote:
On Wed, Nov 24, 2010 at 12:58 AM, Janwillem van Dijk
<[email protected]>  wrote:
I have a small application that displays a tree structure using ete2
(http://ete.cgenomics.org/). The node names are unicode and contain in
particular German and French special chars. When I run the script from Eric4 or directly from a terminal with "python scriptname.py" all is OK. However I want to run it as a subprocess and than the special chars generate errors:

import subprocess
arg =['python', script_path_name]
p = subprocess.Popen(arg)
What's the error output?

Yao


The traceback.print_exc gives:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 1: ordinal not in range(128)
print u'\xe4' correctly shows the German a-umlaut

I made a small PyQt4 test prog with a painTextEdit that shows the character correctly, both when started directly and as a subprocess. Sometimes I think I understood the in and outs of unicode and sometimes I think I am getting mad of unicode and (Qt) python.

Any suggestions where to look?
Thanks, Janwillem

Hello Janwillem,

you have to convert the strings:

import codecs
codecs.encode(u'äöü', 'iso8859-1') # u'a-umlaut o-umlaut u-umlaut' or u'\xe4\xf6\xfc'

If you get unicode text from PyQt and want to use it on the command line or write it down, you have to convert it. Another example is
fp = open('test.txt', 'wb')
fp.write(u'\xe4\xf6\xfc')    # Throws exception
fp.write(codecs.encode(u'\xe4\xf6\xfc', 'iso8859-1'))    # ok
fp.close()

Regards, Tobias
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to