UTF8编码脚本未正确编码大写变音字母

时间:2019-01-09 12:08:12

标签: javascript utf-8 character-encoding internationalization encode

我有一个网页正在从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不太了解,所以我很to愧地说很多这样的事情令我头疼。谁能帮助我更新编码功能,以便它也可以正确编码大写变音字母,还是不那么简单?

0 个答案:

没有答案