javascript - 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 不太了解,所以我很惭愧地说很多事情都超出了我的想象。谁能帮我更新编码函数,以便它也能正确编码大写变音字母,还是没有那么简单?
解决方案
推荐阅读
- html - HTML/CSS 背景与其他屏幕尺寸不匹配
- django - django rest 框架“ModuleNotFoundError:没有名为‘路由器’的模块”
- ubuntu - 报告为专有的开源 .deb 包
- typescript - 函数类型 - TypeScript
- python - 使用推导将 Python 字典数组转换为 Python 字典
- linux - 从 Windows7 主机调整 Ubuntu Virtualbox vdi 大小不生效
- python - Scipy / ctypes build-config:如何加载 lib?
- php - codeigniter 控制器上的未定义属性
- php - php 检查先前的数组键值是否与正在检查的当前数组相同
- html - Ionic 3 中的断线