In particular when data is pulled out of the DB and placed onto the DU form. When you're in "Preview" or "Edit" mode, what you're looking at (the text you're able to edit) has already made a round trip to the DB (your initial draft was saved to the DB IOW).
Now, that's also true when you just make a post and it shows up on the site (which is also reading posts from the database) but this a different sort of operation (using the web server) vs. pulling data out of the DB to enable editing (uses an app server typically, which is different software vs the web server).
The fact the problem only occurs when a post is edited by a user (but an UNEDITED post shows up fine on the forums) tells me the problem almost surely occurs when pulling data from the DB into the Editor. I'd expect something to the effect that the DB stores the data as UTF-8 (pretty sure DU is on mysql database, and some form of UTF-8 is default), the Web Server expects the same form of UTF-8, but the EDITOR expects a character set that's somehow different (could be a different UTF-8 version, of which there are a few, or maybe Windows).
They are sets that are LARGELY translatable seamlessly, but some characters (and smart quotes are notorious for this) don't translate perfectly, so we get these wrong characters show up in the Edit/Preview window, and then these 'wrong' characters save to the DB when the user updates, and then show up on the site as wrong.