import BaseHTTPServer, os, thread, webbrowser, sys

def OpenWebBrowser(url):
	"""Work around broken webbrowser on Mac OS X"""
	assert url[:4] == 'http'
	if (sys.platform == 'darwin'):
		os.popen("open %s" % url).close()
	else:
		webbrowser.open_new(url)

def BrowserMessage(messageToBrowser):
	"""Pops open a browser window and displays messageToBrowser (HTML formatted text)"""
	class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
		def do_GET(self):
			self.wfile.write('HTTP/1.1 200 OK\nServer: boto\nContent-Type: text/html\n\n')
			self.wfile.write(messageToBrowser)
	httpd = BaseHTTPServer.HTTPServer(('',8000),MyHandler)
	t = thread.start_new_thread( httpd.handle_request, () )
	OpenWebBrowser('http://127.0.0.1:8000')

## BrowserMessage("Hello there")    # This  works OK

BrowserMessage(u'La Pe\xf1a')       # This fails with UnicodeEncodeError

