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