UTF8 кодирует скрипт, неправильно кодирующий диакритические буквы в верхнем регистре - PullRequest
0 голосов
/ 09 января 2019

У меня есть веб-страница, которая извлекает данные из 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, поэтому мне стыдно сказать, что многое из этого происходит у меня над головой. Может кто-нибудь помочь мне обновить функцию кодирования, чтобы она также правильно кодировала диакритические буквы в верхнем регистре, или это не так просто?

...