OK guys I have got it narrowed down - turns out it's the scraping from the XML NFO that is killing my formatting. Here is a log where I deleted 21 Grams from my library and re-scanned it from its NFO file:
http://www.pastebin.ca/1215305
The relevant section of this log file:
19:09:54 T:2768 M:656822272 DEBUG: Checking if file '21.grams.2003.720p.dtheater.dts.x264-esir.mkv' is a Sample file
19:09:54 T:2768 M:656818176 DEBUG: CVideoDatabase::GetMovieId (H:\Movies\21.Grams.2003.720p.DTheater.DTS.x264-ESiR.mkv), query = select idMovie from movie where idFile=1191
19:09:54 T:2768 M:656756736 DEBUG: Found matching nfo file: H:\Movies\21.Grams.2003.720p.DTheater.DTS.x264-ESiR.nfo
19:09:54 T:2768 M:656711680 DEBUG: VIDEO::CVideoInfoScanner::CheckForNFOFile Got details from nfo
19:09:54 T:2768 M:656711680 DEBUG: Adding new item to movies:H:\Movies\21.Grams.2003.720p.DTheater.DTS.x264-ESiR.mkv
19:09:54 T:2768 M:657276928 DEBUG: CVideoDatabase::GetMovieId (H:\Movies\21.Grams.2003.720p.DTheater.DTS.x264-ESiR.mkv), query = select idMovie from movie where idFile=1191
19:09:54 T:2768 M:657272832 DEBUG: CVideoDatabase::GetMovieId (H:\Movies\21.Grams.2003.720p.DTheater.DTS.x264-ESiR.mkv), query = select idMovie from movie where idFile=1191
19:09:55 T:2768 M:652873728 INFO: Caching image from: H:\Movies\21.Grams.2003.720p.DTheater.DTS.x264-ESiR-fanart.jpg to C:\Documents and Settings\Administrator\Application Data\XBMC\UserData\Thumbnails\Video\Fanart\914b37c3.tbn
As you can see it says it loads the data from my NFO file (H:\Movies\21.Grams.2003.720p.DTheater.DTS.x264-ESiR.nfo). If I open that NFO file in notepad, it shows proper accented characters. After importing from this NFO file, though, my XBMC library shows the garbled characters. I have archived the NFO file so as to preserve formatting:
http://nic.wolfeden.ca/xbmc/21.Grams.200...4-ESiR.rar
If somebody could try making a fake 21.Grams.2003.720p.DTheater.DTS.x264-ESiR.mkv file an importing it into their library I'd be much obliged.