> x = [u"\xeeabc2:xyz", u"abc3:123"]
> u = "\xe7abc"
u is not a Unicode string.
> x.append("%s:%s" % ("xfasfs", u))
so what you append is not a Unicode string, either.
> x.append(u"Hello:afddfdsfa")
>
> y = u'\n'.join(x)
As a consequence, .join tries to convert the byte string to
a Unicode string, and fails, because it contains non-ASCII
bytes.
> Why does this work with no exceptions
>
> x=[]
> u = "\xe7abc"
> x.append("%s:%s" % ("xfasfs", u))
% here is applied to a byte string, with all arguments also byte
strings. The result is a byte string.
>
> and this doesnt
> x=[]
> u = "\xe7abc"
> x.append("%s:%s" % (u"xfasfs", u))
% is applied to a byte string, with one argument being a Unicode
string. The result is a Unicode string, where all byte strings
get converted to Unicode. Converting u fails, as it has non-ASCII
bytes in it.
Regards,
Martin
--
http://mail.python.org/mailman/listinfo/python-list