From: Roach, A. (IHS/NPA) <All...@ih...> - 2009-08-14 20:21:01
|
Hi. I'm running python 2.6, wx 2.8, and py2exe .6.9 on XP. I get a unicode error in a wxpython program after py2exe, in the .exe version. The error doesn't occur in the .py python program. It didn't look like the encoding issues on this website were the same as my issue. The error code is: 'UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 20: ordinal not in range(128)' Here's the area of code where it's messing up. There's a nested try...except loop as I was trying different things to get it to work. try: entry_dict[cols[index]] = str(col) #column=value except: checkfile.close() try: newstr = '' bad_pos = 0 for char in col.encode(): bad_pos += 1 if ord(char) < 128: newstr = char entry_dict[cols[index]] = str(col) except: entry_dict[cols[index]] = str(col[0:bad_pos] + col[bad_pos+1:]) |
From: Mark H. <ski...@gm...> - 2009-08-16 06:44:00
|
Please try reducing the problem to the smallest which demonstrates the problem, then paste the entire code *and* the entire output, including complete traceback and error messages generated. Cheers, Mark On 15/08/2009 6:20 AM, Roach, Allen (IHS/NPA) wrote: > Hi. > > I’m running python 2.6, wx 2.8, and py2exe .6.9 on XP. I get a unicode > error in a wxpython program after py2exe, in the .exe version. The error > doesn’t occur in the .py python program. It didn’t look like the > encoding issues on this website were the same as my issue. > > The error code is: ‘UnicodeEncodeError: 'ascii' codec can't encode > character u'\u2013' in position 20: ordinal not in range(128)’ > > Here’s the area of code where it’s messing up. There’s a nested > try…except loop as I was trying different things to get it to work. > > try: > > entry_dict[cols[index]] = str(col) #column=value > > except: > > checkfile.close() > > try: > > newstr = /''/ > > bad_pos = 0 > > for char in col.encode(): > > bad_pos += 1 > > if ord(char) < 128: > > newstr = char > > entry_dict[cols[index]] = str(col) > > except: > > entry_dict[cols[index]] = str(col[0:bad_pos] + col[bad_pos+1:]) > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > > > ------------------------------------------------------------------------ > > _______________________________________________ > Py2exe-users mailing list > Py2...@li... > https://lists.sourceforge.net/lists/listinfo/py2exe-users |
From: Roach, A. (IHS/NPA) <All...@ih...> - 2009-08-17 22:19:00
|
Ok. I've reduced the problem. I wasn't able to get the traceback as it errors with a unicode exception when I try to write it to a file. I'm thinking it's a similar reason as to why my program hiccups with the unicode character. Anyway, the code below works as a python program. It fails as a .exe. I've included output when run under both conditions. Again, thanks for all help. Code: import sys, pyodbc, pprint, traceback, exceptions adriver ='{SQL Server}' aserver ='localhost' adatabase ='wo_tracking_play' auid ='sa' apwd ='sa123IHS' myfile=open('c:\\websites\\errors.txt', 'w') conn = pyodbc.connect(driver=adriver, server=aserver, database=adatabase, uid=auid, pwd=apwd, autocommit=True) cursor = conn.cursor() wocmd = 'select * from tblprojectstatus where [Project Owner]=\'Frazier, Tim\' and ROW_ID=\'686\'' result = cursor.execute(wocmd).fetchall()[0][1] myfile.write('b4 try\n') try: myfile.write(result + ' >as is<\n') except: try: myfile.write(str(result) + ' >str<\n') except: myfile.write(result.encode() + ' >encode<\n') myfile.close() cursor.close() conn.close() sys.exit() Content of myfile when run as python program (no errors incurred): b4 try 151 - 835 File Format-Technical Review >as is< Content of myfile when run as executable: b4 try Errors when run as executable: Traceback (most recent call last): File "dbtest.py", line 25, in <module> UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 21: ordinal not in range(128) -----Original Message----- From: Mark Hammond [mailto:ski...@gm...] Sent: Sunday, August 16, 2009 12:44 AM To: Roach, Allen (IHS/NPA) Cc: py2...@li... Subject: Re: [Py2exe-users] unicode error after py2exe Please try reducing the problem to the smallest which demonstrates the problem, then paste the entire code *and* the entire output, including complete traceback and error messages generated. Cheers, Mark On 15/08/2009 6:20 AM, Roach, Allen (IHS/NPA) wrote: > Hi. > > I'm running python 2.6, wx 2.8, and py2exe .6.9 on XP. I get a unicode > error in a wxpython program after py2exe, in the .exe version. The error > doesn't occur in the .py python program. It didn't look like the > encoding issues on this website were the same as my issue. > > The error code is: 'UnicodeEncodeError: 'ascii' codec can't encode > character u'\u2013' in position 20: ordinal not in range(128)' > > Here's the area of code where it's messing up. There's a nested > try...except loop as I was trying different things to get it to work. > > try: > > entry_dict[cols[index]] = str(col) #column=value > > except: > > checkfile.close() > > try: > > newstr = /''/ > > bad_pos = 0 > > for char in col.encode(): > > bad_pos += 1 > > if ord(char) < 128: > > newstr = char > > entry_dict[cols[index]] = str(col) > > except: > > entry_dict[cols[index]] = str(col[0:bad_pos] + col[bad_pos+1:]) > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------ ------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > > > ------------------------------------------------------------------------ > > _______________________________________________ > Py2exe-users mailing list > Py2...@li... > https://lists.sourceforge.net/lists/listinfo/py2exe-users |
From: Mark H. <mha...@sk...> - 2009-08-18 07:25:53
|
On 18/08/2009 8:17 AM, Roach, Allen (IHS/NPA) wrote: > Ok. I've reduced the problem. I wasn't able to get the traceback as it > errors with a unicode exception when I try to write it to a file. I'm > thinking it's a similar reason as to why my program hiccups with the > unicode character. Anyway, the code below works as a python program. > It fails as a .exe. I've included output when run under both > conditions. Again, thanks for all help. > > Code: > import sys, pyodbc, pprint, traceback, exceptions > adriver ='{SQL Server}' > aserver ='localhost' > adatabase ='wo_tracking_play' > auid ='sa' > apwd ='sa123IHS' > > myfile=open('c:\\websites\\errors.txt', 'w') > conn = pyodbc.connect(driver=adriver, server=aserver, > database=adatabase, uid=auid, pwd=apwd, autocommit=True) > cursor = conn.cursor() > wocmd = 'select * from tblprojectstatus where [Project > Owner]=\'Frazier, Tim\' and ROW_ID=\'686\'' > result = cursor.execute(wocmd).fetchall()[0][1] > myfile.write('b4 try\n') Try replacing everything below this with: myfile.write(repr(result) + '>as is<\n') ie, no exception handlers. For reasons I can't yet explain, it appears the SQL query is returning different values - as to whether it is garbage or not, the repr() should offer some clues. Cheers, Mark |
From: Roach, A. (IHS/NPA) <All...@ih...> - 2009-08-20 16:32:24
|
This is the output: b4 try u'151 - 835 File Format\u2013Technical Review' >as is< I did try cutting and concatenating the string without including the unicode character. That didn't work on the .exe program. Though, had no problems on the python version. Thanks Allen -----Original Message----- From: Mark Hammond [mailto:mha...@sk...] Sent: Tuesday, August 18, 2009 1:24 AM To: Roach, Allen (IHS/NPA) Cc: py2...@li... Subject: Re: [Py2exe-users] unicode error after py2exe On 18/08/2009 8:17 AM, Roach, Allen (IHS/NPA) wrote: > Ok. I've reduced the problem. I wasn't able to get the traceback as it > errors with a unicode exception when I try to write it to a file. I'm > thinking it's a similar reason as to why my program hiccups with the > unicode character. Anyway, the code below works as a python program. > It fails as a .exe. I've included output when run under both > conditions. Again, thanks for all help. > > Code: > import sys, pyodbc, pprint, traceback, exceptions > adriver ='{SQL Server}' > aserver ='localhost' > adatabase ='wo_tracking_play' > auid ='sa' > apwd ='sa123IHS' > > myfile=open('c:\\websites\\errors.txt', 'w') > conn = pyodbc.connect(driver=adriver, server=aserver, > database=adatabase, uid=auid, pwd=apwd, autocommit=True) > cursor = conn.cursor() > wocmd = 'select * from tblprojectstatus where [Project > Owner]=\'Frazier, Tim\' and ROW_ID=\'686\'' > result = cursor.execute(wocmd).fetchall()[0][1] > myfile.write('b4 try\n') Try replacing everything below this with: myfile.write(repr(result) + '>as is<\n') ie, no exception handlers. For reasons I can't yet explain, it appears the SQL query is returning different values - as to whether it is garbage or not, the repr() should offer some clues. Cheers, Mark |
From: Werner F. B. <wer...@fr...> - 2009-08-20 20:30:23
|
Allen, Roach, Allen (IHS/NPA) wrote: > This is the output: > b4 try > u'151 - 835 File Format\u2013Technical Review' >as is< I believe this is a "-" encoded in utf-8 - at least that what is shown in my shell. What encoding are you using when you run it as a .py? i.e. can you add this to your code: import sys print sys.getdefaultencoding() > > I did try cutting and concatenating the string without including the > unicode character. That didn't work on the .exe program. Though, had > no problems on the python version. I am guessing that you are running utf-8, maybe set in sitecustomize.py, but when running in .exe it is using ascii. If this is your problem then the code I posted earlier in this thread should fix your problem. Werner |
From: Mark H. <ski...@gm...> - 2009-08-20 23:04:26
|
On 21/08/2009 6:29 AM, Werner F. Bruhin wrote: > Allen, > > Roach, Allen (IHS/NPA) wrote: >> This is the output: >> b4 try >> u'151 - 835 File Format\u2013Technical Review'>as is< > I believe this is a "-" encoded in utf-8 - at least that what is shown > in my shell. Yeah - it is an 'en dash'. Mark |
From: Werner F. B. <wer...@fr...> - 2009-08-16 11:05:17
|
Hi, Roach, Allen (IHS/NPA) wrote: > Hi. > > I’m running python 2.6, wx 2.8, and py2exe ..6.9 on XP. I get a unicode > error in a wxpython program after py2exe, in the .exe version. The > error doesn’t occur in the .py python program. It didn’t look like the > encoding issues on this website were the same as my issue. Are you using "ascii" encoding when you run it as .py? The following is not really a correction to your problem, but in my case it reduce the number of 'decode/encode' calls in the application. In my app (using wxPython 2.8.x Unicode) I added the following to my app.py file. # people say one should leave this alone and use decode/encode, or define this # in sitecustomize.py # either of them don't really work for me, so as long as the following does # this is what I will do if hasattr(sys, "frozen"): #Py2Exe does not run Site.py sys.setdefaultencoding('utf-8') del sys.setdefaultencoding else: #The Python interpreter needs to reload the function reload(sys) sys.setdefaultencoding('utf-8') del sys.setdefaultencoding "people" in the above are different posts on Python lists. All my .py files are in utf-8 encoding and have the following in the first line "# -*- coding: utf-8 -*-#". Then I make sure that any external data being read in is either utf-8 or I do the encode/decode call's. Werner |