UnicodeDecodeError: 'ascii' codec can't decodee byte 0xff in position 0: ordinal not in range(128)

Fabio Zadrozny fabiofz at gmail.com
Mon Nov 18 06:45:37 EST 2013


On Mon, Nov 18, 2013 at 2:55 AM, Hoàng Tuấn Việt <vietht2 at viettel.com.vn>wrote:

> Hi all,
>
>
>
> I use Python telnetlib on Windows 7 32 bit. Here is my code:
>
>
>
>     def *telnet*(*self*, host, os, username, password):
>
>         connection = telnetlib.Telnet(host)
>
>         connection.read_until(*'login: '*)
>
>         connection.write(username + *'\r'*)
>
>         connection.read_until(*'assword: '*)
>
>         connection.write(password + *'\r'*)
>
>         connection.read_until(*'>'*, timeout = TIMEOUT)
>
>        return connection
>
>
>
> I can run the program in Eclipse and telnet successfully to a Windows host.
>
>
>
> But when I export to .exe file:
>
>
>
> from distutils.core import setup
>
> import py2exe
>
>
>
> setup(
>
>     options = {
>
>             *"py2exe"*:{
>
>             *"packages"*: [*'wx.lib.pubsub'*],
>
>             *"dll_excludes"*: [*"MSVCP90.dll"*, *"HID.DLL"*,
> *"w9xpopen.exe"*],
>
>         }
>
>     },
>
>     console = [{*'script'*: *‘my_program.py'*}]
>
> )
>
>
>
> and run the programe, I encounter this error:
>
>
>
> UnicodeDecodeError: 'ascii' codec can't decodee byte 0xff in position 0:
> ordinal not in range(128)
>
>
>
> at line:
>
>
>
> connection.write(username + '\r')
>
>
>
> I have debugged and searched the Internet hard but found no solution yet.
>
>
>
> I think it is because of ‘\r’.
>
>
>
> Do you have any idea?
>
>
>
> Viet
>
> --
> https://mail.python.org/mailman/listinfo/python-list
>
>
You should be able to reproduce the same behavior on PyDev if in your run
configuration you select the encoding of the console to be ascii (run > run
configurations > select run configuration > common > set encoding to
us-ascii).

My guess is that you have the problem because the username has non-ascii
chars -- and you're receiving it as an unicode and not a string... so, you
have to do encode it properly to a string before writing to the connection
(i.e.: username.encode('utf-8') + '\r' -- although the encoding may have to
be a different one and not utf-8).

Cheers,

Fabio
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20131118/3ee4cd4c/attachment.html>


More information about the Python-list mailing list