<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">OK, thanks a lot Spir and Kent for your replies. I converted element.text to str because some of the element.text were integers and these caused TypeErrors later on in the program. I don't have the program here (it's in the office) so I can't tell you the exact details. It's a search-and-replace program where users can enter a search text (or regex pattern) and a replace text. The source file is an xml file. Currently, strings with non-ascii letters still need to be inputted in unicode format, eg. u'enqu\xeate' instead of "enquête". Kinda ugly. I'll try to fix that later. Thanks again!<br><br>Cheers!!<br>
Albert-Jan<br>
<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
In the face of ambiguity, refuse the temptation to guess.<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br><br>--- On <b>Wed, 11/25/09, Kent Johnson <i>&lt;kent37@tds.net&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Kent Johnson &lt;kent37@tds.net&gt;<br>Subject: Re: [Tutor] UnicodeEncodeError<br>To: "Albert-Jan Roskam" &lt;fomcl@yahoo.com&gt;<br>Cc: "tutor@python.org tutor@python.org tutor@python.org" &lt;tutor@python.org&gt;<br>Date: Wednesday, November 25, 2009, 5:55 PM<br><br><div id="yiv496197121"><div class="gmail_quote">On Wed, Nov 25, 2009 at 8:44 AM, Albert-Jan Roskam <span dir="ltr">&lt;<a rel="nofollow" ymailto="mailto:fomcl@yahoo.com" target="_blank" href="/mc/compose?to=fomcl@yahoo.com">fomcl@yahoo.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font-family: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; font-size: inherit; line-height: inherit; font-size-adjust: inherit; font-stretch: inherit;" valign="top">
<div>Hi,</div>
<div>&nbsp;</div>
<div>I'm parsing an xml file using elementtree, but it seems to get stuck on certain non-ascii characters (for example: "ê"). I'm using Python 2.4. Here's the relevant code fragment:</div>
<div>&nbsp;</div>
<div># CODE:</div>
<div>for element in doc.getiterator():<br>&nbsp; try:<br>&nbsp;&nbsp;&nbsp;&nbsp;m = re.match(search_text, str(element.text))<br>&nbsp; except UnicodeEncodeError:<br>&nbsp;&nbsp;&nbsp; raise # I want to get rid of this exception.<br></div>
<div># PRINTBACK:</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;m = re.match(search_text, str(element.text))<br>UnicodeEncodeError: 'ascii' codec can't encode character u'\xea' in position 4: ordinal not in range(128)</div></td></tr></tbody></table></blockquote>
<div><br>You can't convert element.text to a str because it contains non-ascii characters. Why are you converting it? re.match() will accept a unicode string as its argument.<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font-family: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; font-size: inherit; line-height: inherit; font-size-adjust: inherit; font-stretch: inherit;" valign="top">

<div>&nbsp;</div>
<div>How can I get rid of this unicode encode error. I tried:</div>
<div>s = str(element.text)</div>
<div>s.encode("utf-8")</div>
<div>(and then feeding it into the regex)</div></td></tr></tbody></table></blockquote><div><br>This fails because it is the str() that won't work. To get UTF-8 use<br>&nbsp; s = element.text.encode('utf-8')<br>&nbsp;but I don't think this is the correct solution.<br>
</div><div>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font-family: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; font-size: inherit; line-height: inherit; font-size-adjust: inherit; font-stretch: inherit;" valign="top">

<div>The xml file is in UTF-8. Somehow I need to tell the program not to use ascii but utf-8, right?<br><br></div></td></tr></tbody></table></blockquote><div>No, just pass Unicode to re.match().<br><br>Kent <br></div></div>
<br>
</div></blockquote></td></tr></table><br>