首页 > 解决方案 > UTF8 编码脚本未正确编码大写变音字母

问题描述

我有一个网页从 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 不太了解,所以我很惭愧地说很多事情都超出了我的想象。谁能帮我更新编码函数,以便它也能正确编码大写变音字母,还是没有那么简单?

标签: javascriptutf-8character-encodinginternationalizationencode

解决方案


推荐阅读