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

将文本从希腊文转换为UTF-8的Javascript,javascript,html,utf-8,leaflet,shapefile,Javascript,Html,Utf 8,Leaflet,Shapefile,我正试图帮助我的老师将一本希腊教科书转换成在线应用程序。其中的一部分包括创建一个Shapefile(在地图上绘制多边形,以及多边形的描述)并映射地图上的所有内容。我无法直接访问shapefile文件中包含我需要转换的数据的部分,因为它是十六进制的。 无论如何,这是我正在打印到控制台的代码。 console.log((arr[1][i]['PERIOD']); “arr”是一个数据数组,它包含我想从希腊文转换为UTF-8的所有属性。我只打印“句号”,而不是与数组关联的其他12个吉祥物。 当我运

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

 console.log((arr[1][i]['PERIOD']);
“arr”是一个数据数组,它包含我想从希腊文转换为UTF-8的所有属性。我只打印“句号”,而不是与数组关联的其他12个吉祥物。
当我运行我的页面时,控制台返回几个文本变体(因为存在几个句点)。下面是它返回的文本示例

ÎÏÏαÏκή, ÎλαÏική, ÎλληνιÏÏική
ΡÏμαÏκή
ÎθÏμανική
Î¥ÏÏεÏοβÏζανÏινή
信不信由你,但这不是希腊文本。所以我四处窥探,发现这个函数可以转换为utf-8:

function encode_utf8( s ){
return  unescape(encodeURI( s ));
}
当我将此函数添加到我的console.log时,我得到的是:

áÃÂüñÃÂúî
ÃÂøÃÂüñýùúî
ÃÂ¥ÃÂÃÂõÃÂÿòÃÂöñýÃÂùýî
ÃÂøÃÂüñýùúî
我不是100%肯定,但我认为我试图转换的文本目前是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;
}
函数genCharMap(){//ISO 8859-7到Unicode
var-map=[],i,j,str;
map.length=256;
映射[0]=0;//填写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';
对于(i=0;i
现在,您可以将此转换应用于字节

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; // "Αβγδ"
var byteArr=[0xC1,0xE2,0xE3,0xE4],//βγδ
str_out=“”,
我
map=genCharMap();
对于(i=0;i


如果您正在为带有“组合字符”的字符集编写此代码,那么将我在
genCharMap
中使用的str替换为一个数字数组可能更安全。

希腊语是一种语言;UTF-8是一种(Unicode)编码。看起来您真正想要的是解码ISO 8859-7(到Unicode文本)。向我们展示您如何读取shapefile(或任何数据来源)。这就是你的问题所在,这就是你可以修复编码的地方。你应该给我们1。“十六进制文件”的摘录,2。如何将这个十六进制文件加载到JavaScript 3中。如何将已加载的数据转换为字符串