Чтение шестнадцатеричных кодов UTF-8 в xml с использованием JavaScript

У меня есть XML-файл, который содержит символы En Dash и Em Dash как часть текста элемента. Они конвертируются в коды UTF-8 следующим образом.

<TextValue>This is an En Dash:  \xE2\x80\x93    This is an Em Dash: \xE2\x80\x94.</TextValue>

Я хотел бы обратиться к этим шестнадцатеричным кодам UTF-8, используя JavaScript, и заменить их любым свободным текстом, который я хочу.

Кто-нибудь может предложить подходы, чтобы сделать это? Я пытался использовать RegEx, но не смог разобрать эти коды. Я мог бы обратиться к любому другому тексту, используя RegEx, хотя.

Спасибо.

2 ответа

Решение

DEMO

var text = "<TextValue>This is an En Dash:  \xE2\x80\x93    This is an Em Dash: \xE2\x80\x94.</TextValue>"

var fromArr = ["\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\xa6"],
    toArr = ["'", "'", '"', '"', '-', '--', '...'];

    for (var i=0;i<fromArr.length;i++) {
        text = text.replace(fromArr[i],toArr[i],"g")
    }
        alert(text)

Изменить на

 var fromArr = ["\xe2\x80\x93", "\xe2\x80\x94"], toArr = [ '-', '--'];

если вам не нужны умные цитаты и многоточие

Результат:

Я, наконец, ушел, прочитав текст сообщения в UTF-8 и используя следующие строки для замены юникодов.

body = body.replace(/\u00E1/g,"a");  //LATIN SMALL LETTER A WITH ACUTE
body = body.replace(/\u00E2/g,"a");  //LATIN SMALL LETTER A WITH CIRCUMFLEX
body = body.replace(/\u00E3/g,"a");  //LATIN SMALL LETTER A WITH TILDE
body = body.replace(/\u201D/g,"\"");  //RIGHT DOUBLE QUOTATION MARK
body = body.replace(/\u201C/g,"\"");  //LEFT DOUBLE QUOTATION MARK
body = body.replace(/\u2424/g," ");  //NEW LINE \n
body = body.replace(/\u000D/g," ");  //CARRIAGE RETURN \r
Другие вопросы по тегам