Javascript将文本从希腊语转换为UTF-8

Javascript converting text from greek to UTF-8

本文关键字:转换 UTF-8 希腊语 文本 Javascript      更新时间:2023-09-26

我正试图帮助我的老师将一本希腊教科书转换成在线应用程序。其中一部分包括获取Shapefile(在地图上绘制多边形,以及多边形的描述)。把这张地图上的所有东西都映射出来。我不能直接访问具有我需要转换的数据的shapefile文件的一部分,因为它是十六进制的。
无论如何,这是我打印到控制台的代码。

 console.log((arr[1][i]['PERIOD']);

"arr"是包含我想要从希腊语转换为UTF-8的所有属性的数据数组。我只打印"PERIOD",而不是与数组关联的其他12个属性。
当我运行我的页面时,控制台返回文本的几种变体(因为存在几个句号)。下面是它返回的文本示例。

ÎÏÏαÏκή, ÎλαÏική, ÎλληνιÏÏική
ΡÏμαÏκή
ÎθÏμανική
Î¥ÏÏεÏοβÏζανÏινή

信不信由你,但这不是希腊文。因此,我窥探了一下,找到了这个函数来转换为utf-8:

function encode_utf8( s ){
return  unescape(encodeURI( s ));
}

当我将这个函数添加到我的console.log中时,我得到的是:

áÃÂüñÃÂúî
ÃÂøÃÂüñýùúî
ÃÂ¥ÃÂÃÂõÃÂÿòÃÂöñýÃÂùýî
ÃÂøÃÂüñýùúî

我不是100%肯定,但我认为我正在尝试转换的文本目前是ISO-8859-7。
任何帮助,这将是惊人的。
谢谢。

您可以很容易地构建一个从一个字符集到另一个字符集的字节映射(尽管这可能会很繁琐)

假设ISO 8859-7只有256字节长,所以不太难,

function genCharMap() { // ISO 8859-7 to Unicode
    var map = [], i, j, str;
    map.length = 256;
    map[0] = 0; // fill in 0
    str = ''u2018'u2019'u00a3'u20ac'u20af'u00a6'u00a7'u00a8'u00a9'u037a'u00ab'u00ac'u00ad'u00ae'u2015'u00b0'u00b1'u00b2'u00b3'u0384'u0385'u0386'u00b7'u0388'u0389'u038a'u00bb'u038c'u00bd'u038e';
    for (i = 0; i < str.length; ++i) // fill in 0xA1 to 0xBE
        map[0xA1 + i] = str.charCodeAt(i);
    for (i = 0; i < 256; ++i) // fill in blanks
        if (i in map) j = map[i] - i;
        else map[i] = j + i;
    return map;
}
现在你可以把这个转换应用到你的字节
var byteArr = [0xC1, 0xE2, 0xE3, 0xE4], // Αβγδ
    str_out = '',
    i,
    map = genCharMap();
for (i = 0; i < byteArr.length; ++i) {
    str_out += String.fromCharCode(
        map[byteArr[i]]
    );
}
str_out; // "Αβγδ"

如果你要用"组合字符"为字符集重写这段代码,那么将我在genCharMap中使用的str替换为数组数字可能更安全。