У меня есть веб-страница, которая извлекает данные из 2 разных источников, один кодируется в базе данных UTF8 (источник A), а другой не кодируется (источник B). Оба источника содержат различные языки и, следовательно, включают несколько иностранных букв.
У меня есть декодирование UTF8 вверху страницы;
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
То, что я обнаружил, означает, что мне нужно закодировать данные, извлекаемые из источника B, чтобы они правильно отображались на странице. Казалось, что все работало нормально, пока я не заметил заглавную букву Ö, которая отображалась как ??. Я сейчас провел некоторое тестирование и обнаружил, что большинство (если не все) диакритические знаки в верхнем регистре отображаются ?? вместо правильного символа. Строчные буквы (ö, ô и т. Д.), Кажется, работают нормально. Я попытался отредактировать исходный код, а также записать правильные символы в кодировке UTF8 на страницу и сузил его до неправильной кодировки, а не декодирования на реальной странице.
Используемая мной функция кодирования JavaScript UTF8 выглядит следующим образом:
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}
else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
Я не слишком разбираюсь в Javascript, поэтому мне стыдно сказать, что многое из этого происходит у меня над головой. Может кто-нибудь помочь мне обновить функцию кодирования, чтобы она также правильно кодировала диакритические буквы в верхнем регистре, или это не так просто?