Сначала проверьте, содержит ли заголовок документа.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Вы также можете прочитать мета-теги с помощью JavaScript:
var metaTags = document.getElementsByTagName("META");
Если это так, это объяснение поведения. Вы можете попробовать изменить utf-8 на ISO-8859-1:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Лучше htmlEncode всех расширенных символов в вашем HTML. Как это:
function encodeHTML(str){
var aStr = str.split(''),
i = aStr.length,
aRet = [];
while (--i) {
var iC = aStr[i].charCodeAt();
if (iC < 65 || iC > 127 || (iC>90 && iC<97)) {
aRet.push('&#'+iC+';');
} else {
aRet.push(aStr[i]);
}
}
return aRet.reverse().join('');
}
Имейте в виду, эта функция закодирует все, что не является [a-zA-Z]. Например, эта функция будет кодировать Doppelgänger в Doppelgänger.