! Arrrrrgh. Finally fixed the upgrader bug, and understood why I was unable to reproduce it. See, I called the upgrader after loadDatabase (so I could access the DB) and before loadSettings (so I could make fixes to settings before they're loaded), and SET NAMES 'utf8' was called by loadSettings, against all expectations. Thus, any database operations made from the upgrader weren't forced to UTF8, and this screwed up accented characters. Moved it to loadDatabase, where it should have been from the start! Oh my, you have no idea how relieved I am to be finally done with this. (Load.php)

- Reverted my fallback code, thanks to this fix. (Class-System.php)