diff -r 62c2b76df993 Doc/library/getpass.rst --- a/Doc/library/getpass.rst Mon Apr 14 07:53:33 2014 -0400 +++ b/Doc/library/getpass.rst Mon Apr 14 19:18:03 2014 +0530 @@ -13,10 +13,11 @@ .. function:: getpass(prompt='Password: ', stream=None) Prompt the user for a password without echoing. The user is prompted using - the string *prompt*, which defaults to ``'Password: '``. On Unix, the prompt - is written to the file-like object *stream*. *stream* defaults to the - controlling terminal (:file:`/dev/tty`) or if that is unavailable to - ``sys.stderr`` (this argument is ignored on Windows). + the string *prompt*, which defaults to ``'Password: '``. On Unix, the + prompt is written to the file-like object *stream* using the replace error + handler. *stream* defaults to the controlling terminal (:file:`/dev/tty`) + or if that is unavailable to ``sys.stderr`` (this argument is ignored on + Windows). If echo free input is unavailable getpass() falls back to printing a warning message to *stream* and reading from ``sys.stdin`` and diff -r 62c2b76df993 Lib/getpass.py --- a/Lib/getpass.py Mon Apr 14 07:53:33 2014 -0400 +++ b/Lib/getpass.py Mon Apr 14 19:18:03 2014 +0530 @@ -138,6 +138,7 @@ try: stream.write(prompt) except UnicodeEncodeError: + # We are using replace error handler to get as much as possible. prompt = prompt.encode(stream.encoding, 'replace') prompt = prompt.decode(stream.encoding) stream.write(prompt)