yanı bir geri arama işlevini kullanarak gibi, sen altıgen karakter başvuruları için ilave destek (ሴ
) düşünebilir.
Ayrıca, fromCharCode
yeterli olmayabilir. Örneğin, 𐤀
bir Fenike karakteri için geçerli bir referanstır, ancak Temel Çok Dilli Düzlem'in dışında olduğu ve JavaScript'in String modeli UTF-16 kod birimlerine dayalı olduğundan, karakter kod noktalarını tam olarak değil, fromCharCode(67840)
çalışmayacaktır. Bir UTF-16 kodlayıcısına ihtiyacınız vardır, örneğin:
String.fromCharCodePoint= function(/* codepoints */) {
var codeunits= [];
for (var i= 0; i<arguments.length; i++) {
var c= arguments[i];
if (arguments[i]<0x10000) {
codeunits.push(arguments[i]);
} else if (arguments[i]<0x110000) {
c-= 0x10000;
codeunits.push((c>>10 & 0x3FF) + 0xD800);
codeunits.push((c&0x3FF) + 0xDC00);
}
}
return String.fromCharCode.apply(String, codeunits);
};
function decodeCharacterReferences(s) {
return s.replace(/&#(\d+);/g, function(_, n) {;
return String.fromCharCodePoint(parseInt(n, 10));
}).replace(/&#x([0-9a-f]+);/gi, function(_, n) {
return String.fromCharCodePoint(parseInt(n, 16));
});
};
alert(decodeCharacterReferences('Hello 𐤀 mum 𐤀!'));
Bu sadece "foos çubuğu" değerini döndürür. Bir şey mi eksik? Düzenleme: Oh, görünüşe göre bu, 'match' =' '' '' ve sadece '39' değil. – alfonso
evet doğru, o zamandan beri kodu tamir ettim –
Teşekkürler, işe yarıyor! Cevabınızı 5 dakika içinde kabul edeceğim. – alfonso