First of all, yes, you really should be using UTF-8. But that doesn't mean the data you have is already UTF-8 encoded.
Secondly, it sounds like that character is HTML encoded in the database already. This is a problem, because it seems that whatever page is displaying this character also tries to HTML-encode the content as well. Here's an example of what I'm talking about.
Data from user: ě
Data HTML encoded (via htmlentities()) prior to going into DB: ě
Data stored in DB: ě
Data retrieved from DB: ě
Data HTML encoded before being printed to the page: ě
Data as seen in the browser: ě
Do you see that? The character becomes double encoded, so that on the 2nd encoding step the ampersand character is converted into an entity itself.
This is the problem with HTML-encoding data before storing it in the database. That should only be done prior to displaying the content, not prior to storage.