The problem is that your users have used the Symbol font, mistakenly thinking that they have entered the square root sign “√” when they have actually entered the letter O with diaeresis, “Ö”. An similar things have apparently happened for other characters, too. This is an old trick that has never worked properly, though often enough to create an illusion of working.
In the early days, the trick was used e.g. with <font face=Symbol>Ö</font>
, and newer modifications like the use of CSS instead of font
markup do not change the basics: you are giving a browser the letter “Ö” and telling it to render it using a font that does not contain it. Some browsers display whatever the Symbol font contains in place of “Ö”, but Firefox knows what the Symbol font is.
The solution is to use the correct characters and make your best effort at ensuring that your font-family
list contains fonts that contain them.
As regards to existing data that plays with the trick, it needs to be converted. You need to analyze where you have such data and replace all non-Ascii characters (that appear as raw data, not as entities/references) by the characters they are meant to denote, as per the Symbol font. Be careful to not convert, say, the letter “Ö” when it is really meant to be “Ö”. For the conversion, see e.g. Symbol font – Unicode alternatives for Greek and special characters in HTML and SIL Mapping Files.