Convert Active Directory Object to string
fredrik at pythonware.com
Tue Jan 17 17:26:46 CET 2006
Dirk Hagemann wrote:
> When I receive data from Microsoft Active Directory it is an
>"ad_object" and has the type unicode. When I try to convert it to a
> string I get this error:
> UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in
> position 26: ordinal not in range(128)
> This is caused by characters like the german ä, ö or ü.
> But I (think I) need this as a string. Is there a simple solution???
A Unicode string is also a string.
If you want an 8-bit string, you need to decide what encoding you want to
use. Common encodings are us-ascii (which is the default if you convert from
unicode to 8-bit strings in Python), ISO-8859-1 (aka Latin-1), and UTF-8.
For example, if you want Latin-1 strings, you can use one of.
s = u.encode("iso-8859-1") # fail if some character cannot be converted
s = u.encode("iso-8859-1", "replace") # instead of failing, replace with ?
s = u.encode("iso-8859-1", "ignore") # instead of failing, leave it out
If you want an ascii string, replace "iso-8859-1" above with "ascii".
If you want to output the data to a web browser or an XML file, you can use
s = cgi.escape(u).encode("ascii", "xmlcharrefreplace")
More information about the Python-list