2014-02-04 3 views
1

Есть ли способ конвертировать HTML-объекты в символы Unicode в Javascript?Преобразование HTML в Unicode

Я попытался

var unicodeHtmlEntity = function (t) { 
    numericValue = parseInt(t.slice(2, -1), 10); 
    numericValue = numericValue.toString(16); 
    return "\\u" + numericValue; 
}; 

Если функция может быть вызвана как €, но возвращает строку \u20ac, а не юникод символ для . Есть идеи?

+0

Я думаю, что это то же самое с этой темой: http://stackoverflow.com/questions/3835317/unicode-value-uxxxx-to-character-in -javascript Надеюсь, это поможет! – Knx

ответ

0

Это должно работать для подавляющего большинства случаев:

function unicodeHtmlEntity (t) { 
    var numericValue = parseInt(t.slice(2, -1), 10); 
    return String.fromCharCode(numericValue); 
} 

Если вы на самом деле нужно поддерживать символы в «астральных» самолетов, вы можете использовать: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint#Getting_it_to_work_with_higher_values вместо String.fromCharCode().

Предполагаю, что вы знаете, что ваш код не имеет отношения к шестнадцатеричным сущностям, а только десятичным. Для того, чтобы поддержать тех, кого вы могли бы сделать что-то вроде:

function unicodeHtmlEntity (t) { 
    var hex = t.charAt(2) === 'x'; 
    var base = hex ? 16 : 10; 
    var pos = hex ? 3 : 2; 
    var numericValue = parseInt(t.slice(pos, -1), base); 
    return String.fromCharCode(numericValue); 
} 
Смежные вопросы