kdialog and unicode
Dumbkiwi
dmbkiwi at yahoo.com
Tue Apr 26 06:17:01 EDT 2005
On Tue, 26 Apr 2005 11:41:01 +0200, Peter Otten wrote:
> Dumbkiwi wrote:
>
>> I'm trying to get python, unicode and kdialog to play nicely together.
>> This is a linux machine, and kdialog is a way to generate dialog boxes
>> in kde with which users can interact (for example input text), and you
>> can use the outputted text in your script.
>>
>> Anyway, what I'm doing is reading from a utf-8 encoded text file using
>> the codecs module, and using the following:
>>
>> data = codecs.open('file', 'r', 'utf-8')
>
> data is now a unicode string.
>
>
>> I then manipulate the data to break it down into text snippets.
>>
>> Then I run this command:
>>
>>>>> test = os.popen('kdialog --inputbox %s' %(data))
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in ?
>> UnicodeEncodeError: 'ascii' codec can't encode character u'\u017a' in
>> position 272: ordinal not in range(128)
>>
>> I would really like kdialog display the text as utf-8. However, it
>> seems that python is trying to pass the utf-8 encoded data as ascii,
>> which obviously fails because it can't deal with the utf-8 encoded text.
>> Is it possible to pass the text out to kdialog as utf-8, rather than
>> ascii?
>
> Just encode the data in the target encoding before passing it to
> os.popen():
>
> test = os.popen('kdialog --inputbox %s' % data.encode("utf-8"))
>
> Peter
I had tried that, but then the text looks like crap. The text I'm using
for this is Polish, and there are a lot of non-English characters in
there. Using this method results in some strange characters - basically it
looks like a file encoded in utf-8, but displayed using iso-8859-1.
Is this the best I can do?
Thanks for your help.
Matt
More information about the Python-list
mailing list