scottrice / Ice

Application to automatically add ROMs to Steam
http://scottrice.github.io/Ice/
MIT License
835 stars 96 forks source link

UnicodeDecodeError #332

Open walmartshopper opened 8 years ago

walmartshopper commented 8 years ago

I am trying to run the master branch on Arch Linux. When I run python2.7 -m ice I get the following output:

=========== Starting Ice =========== Detected Emulator: Dolphin Detected Console: Nintendo Wii => Dolphin =========== User: 37281274 =========== [ERROR] An exception occurred while running Ice Traceback (most recent call last): File "ice/runners/ice_engine.py", line 153, in run self.main(dry_run=dry_run) File "ice/runners/ice_engine.py", line 133, in main self.run_for_user(user_context, dry_run=dry_run) File "ice/runners/ice_engine.py", line 145, in run_for_user self._create_backup(user, dry_run=dry_run) File "ice/runners/ice_engine.py", line 167, in _create_backup shortcuts.write_shortcuts(backup_path, shortcuts.get_shortcuts(user)) File "/usr/lib/python2.7/site-packages/pysteam-1.0.0b2-py2.7.egg/pysteam/shortcuts.py", line 30, in write_shortcuts vdf_contents = ShortcutGenerator().to_string(shortcuts) File "/usr/lib/python2.7/site-packages/pysteam-1.0.0b2-py2.7.egg/pysteam/_shortcut_generator.py", line 20, in to_string string = x00 + 'shortcuts' + x00 + self.generate_array_string(shortcuts) + x08 + x08 + x0a File "/usr/lib/python2.7/site-packages/pysteam-1.0.0b2-py2.7.egg/pysteam/_shortcut_generator.py", line 29, in generate_array_string string += x00 + str(i) + x00 + self.generate_shortcut_string(shortcut) File "/usr/lib/python2.7/site-packages/pysteam-1.0.0b2-py2.7.egg/pysteam/_shortcut_generator.py", line 37, in generate_shortcut_string string += self.generate_keyvalue_pair("icon",shortcut.icon) File "/usr/lib/python2.7/site-packages/pysteam-1.0.0b2-py2.7.egg/pysteam/_shortcut_generator.py", line 52, in generate_keyvalue_pair return x01 + key + x00 + value + (x00 if more else x08) UnicodeDecodeError: 'ascii' codec can't decode byte 0x84 in position 109: ordinal not in range(128)

Close the window, or hit enter to exit...

These are all my rom file names, nothing non-ascii in them:

/s/games/wii/roms/Skyward Sword.iso /s/games/wii/roms/DKCR.iso /s/games/wii/roms/Mario Galaxy.iso /s/games/wii/roms/Metroid Prime 3 Corruption.iso /s/games/wii/roms/Goldeneye 007.iso /s/games/wii/roms/Mario Galaxy 2.iso /s/games/wii/roms/Twilight Princess.iso

nico-knabe commented 8 years ago

I have the same problem on windows 7 and my snes roms. I run the master branch, too.

2016-01-09 13:14:05,956 [DEBUG][steam_shortcut_synchronizer.py][sync_roms_for_user:99]: Saving shortcuts 2016-01-09 13:14:05,957 [ERROR][ice_engine.py][run:155]: An exception occurred while running Ice Traceback (most recent call last): File "ice\runners\ice_engine.py", line 153, in run self.main(dry_run=dry_run) File "ice\runners\ice_engine.py", line 133, in main self.run_for_user(user_context, dry_run=dry_run) File "ice\runners\ice_engine.py", line 148, in run_for_user self.shortcut_synchronizer.sync_roms_for_user(user, roms, self.config, dry_run=dry_run) File "ice\steam_shortcut_synchronizer.py", line 100, in sync_roms_for_user shortcuts.set_shortcuts(user, updated_shortcuts) File "C:\Python27\lib\site-packages\pysteam-1.0.0b2-py2.7.egg\pysteam\shortcuts.py", line 41, in set_shortcuts write_shortcuts(paths.shortcuts_path(user_context), shortcuts) File "C:\Python27\lib\site-packages\pysteam-1.0.0b2-py2.7.egg\pysteam\shortcuts.py", line 30, in write_shortcuts vdf_contents = ShortcutGenerator().to_string(shortcuts) File "C:\Python27\lib\site-packages\pysteam-1.0.0b2-py2.7.egg\pysteam_shortcut_generator.py", line 20, in to_string string = x00 + 'shortcuts' + x00 + self.generate_array_string(shortcuts) + x08 + x08 + x0a File "C:\Python27\lib\site-packages\pysteam-1.0.0b2-py2.7.egg\pysteam_shortcut_generator.py", line 29, in generate_array_string string += x00 + str(i) + x00 + self.generate_shortcut_string(shortcut) File "C:\Python27\lib\site-packages\pysteam-1.0.0b2-py2.7.egg\pysteam_shortcut_generator.py", line 35, in generate_shortcut_string string += self.generate_keyvalue_pair("Exe",shortcut.exe) File "C:\Python27\lib\site-packages\pysteam-1.0.0b2-py2.7.egg\pysteam_shortcut_generator.py", line 52, in generate_keyvalue_pair return x01 + key + x00 + value + (x00 if more else x08) UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 92: ordinal not in range(128)

mdeguzis commented 8 years ago

Same issue here on Debian/SteamOS. Glad to know it's not the Debian package I made specifically.

My error:

[ERROR] An exception occurred while running Ice
Traceback (most recent call last):
  File "ice/decorators.py", line 9, in wrapped
    func(*args, **kwargs)
  File "ice/runners/ice_engine.py", line 131, in run
    self.create_backup(user, dry_run=dry_run)
  File "ice/runners/ice_engine.py", line 104, in create_backup
    backups.create_backup_of_shortcuts(self.config, user)
  File "ice/backups.py", line 67, in create_backup_of_shortcuts
    shortcuts.write_shortcuts(backup_path, shortcuts.get_shortcuts(user))
  File "/usr/lib/python2.7/dist-packages/pysteam/shortcuts.py", line 30, in write_shortcuts
    vdf_contents = ShortcutGenerator().to_string(shortcuts)
  File "/usr/lib/python2.7/dist-packages/pysteam/_shortcut_generator.py", line 20, in to_string
    string = x00 + 'shortcuts' + x00 + self.generate_array_string(shortcuts) + x08 + x08 + x0a
  File "/usr/lib/python2.7/dist-packages/pysteam/_shortcut_generator.py", line 29, in generate_array_string
    string += x00 + str(i) + x00 + self.generate_shortcut_string(shortcut)
  File "/usr/lib/python2.7/dist-packages/pysteam/_shortcut_generator.py", line 37, in generate_shortcut_string
    string += self.generate_keyvalue_pair("icon",shortcut.icon)
  File "/usr/lib/python2.7/dist-packages/pysteam/_shortcut_generator.py", line 52, in generate_keyvalue_pair
    return x01 + key + x00 + value + (x00 if more else x08)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 60: ordinal not in range(128)
Ryochan7 commented 8 years ago

This is an issue with pysteam. I encountered this problem as well and made an issue about it. One thing to mention right away is that, since Ice has to re-create the shortcuts.vdf file, this problem could occur due to a non-Steam app shortcut that you have created; your ROMs might not be causing the problem. The problem for me was due to a custom non-Steam app shortcut for the game Star Wars: Dark Forces. In my case, a Registered Sign symbol (U+00AE) is used in the game name (STAR WARS®: Dark Forces).

https://github.com/scottrice/pysteam/pull/7

Unicode Character 'REGISTERED SIGN' (U+00AE)

http://www.fileformat.info/info/unicode/char/00ae/index.htm

mdeguzis commented 8 years ago

Thank you very much @Ryochan7. This explains why I didn't get this before as it was likely a clean install still needs fixed, but I'll do a clean install soon to confirm. I'll susbcribe to the issue you linked. I had thought my pysteam packaging was wrong, as it worked before. I actually debianized all the pypi packages per the required versuons, using py2dsc.

mdeguzis commented 8 years ago

I'll test this PR you made with my fork.

@Ryochan7 @scottrice , the fix Ryochan proposed was actually kind of implemented in an old commit (b1b1f08), when the structure of Ice was a bit different. Looks like the change never migrated, or was deemed not necessary.

Update:

PR fix by @Ryochan7 does indeed work. Just tested this now against my SteamOS package. I patched it into my fork.