Оказывается, проблема не имеет ничего общего с декодированием ROT-13.
В Internet Explorer есть «ошибка», связанная с атрибутом ссылок электронной почты «href». Если вы обновите «href» с помощью javascript, IE автоматически обновит текст ссылки, чтобы он соответствовал «href».
Итак, в моем коде сначала правильно был декодирован href, а затем IE установил текст ссылки в соответствии с новым декодированным href. Затем мы декодируем уже декодированный текст ссылки, непреднамеренно кодируя его снова.
Решение заключалось в том, чтобы сначала сохранить декодированный текст ссылки в виде переменной var, а затем использовать его для текста ссылки после завершения декодирования href. Вот так:
$('a.email-encoded').each(function() {
var oldHref = $(this).attr('href');
var newHref = rot13x(oldHref);
var newLink = rot13x($(this).html());
$(this).attr('href', newHref);
$(this).html(newLink);
});