Sloppy reading on my part. I thought you had character translation problems, but html entities are due to something else. It seems you are doing two translations from characters to html entities.
If you convert characters to html entities before inserting, and then do the same when searching, you would still get your matches. This, however, should display properly since the browser converts html entities back into characters. But if you also do this conversion once more, then all the & will be turned into &
So können will first be turned into können, and then turned into können, which the browser turns back into können.
Search your php code for the htmlentities function.