description:
Reading data from active directory. some names have the French accented E. when I write to screen, no problems. when I write to a .txt file the program errors out with...

Traceback (most recent call last):
File "ad-listing.py", line 20, in <module>
print >> OutFile, person.displayname,"~",person.title,\
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 9:
ordinal not in range(128)

when I try something fancy like...

print >> OutFile,(person.displayname,'utf8').....

the output of that field is...
(u'Keith Brown', 'utf8')
(u'FTP TELUS', 'utf8')
(u'FTP AT&T', 'utf8')
(u'FTP EPCOR', 'utf8')
(u'FTP SHAW', 'utf8')

WHen I try to chop off the "(u'" at the start and "', 'utf8')" at the end all the data disappears leaving the brackets..

Is the any function that can do a simple straight conversion to text so that I can print the data to a file with out massaging the heck out of the data?

Python 2.6, Windows XP Pro, Active directory

I'm trying this in Python to try to introduce an Open Source programing language where I work.

Recommended Answers

All 2 Replies

You can set the encoding for the file
fp = codecs.open('test', encoding='utf-8', mode='w')

Or you can change the default encoding for the system
sys.setdefaultencoding('utf-8')

You may have to use encode/decode, see here
http://farmdev.com/talks/unicode/

commented: useful info +2
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.