У меня проблема с bizzaire, и я просмотрел все подобные вопросы и до сих пор не смог ее решить. Я дешифрую сообщение электронной почты MIME в javascript и вижу = C2 = A3, что означает два символа 0xC2 и 0xA2, чтобы сделать знак британского фунта UTF-8.Отображение UTF-8 в Javascript Сгенерированный HTML (например, знак фунта)
Я установил meta charset = UTF-8 в документе, но он все еще не отображается как знак фунта в визуализированном html-документе. Страница Info сообщает, что страница отображается как UTF-8 ... если это так, почему не знак фунта и nbsp отображаются правильно?
Я использую следующий код, чтобы декодировать строку:
s.replace(/=[\r\n]+/g, "").replace(/=[0-9A-F]{2}/gi, function(v) {
return String.fromCharCode(parseInt(v.substr(1), 16));
})
Я использую следующий код для декодирования строки s: 's.replace (/ = [\ r \ n] +/g, "") .replace (/ = [0-9A-F] {2}/gi, function (v) { return String.fromCharCode (parseInt (v.substr (1)), 16)); }); ' – user3780104
Да, это слишком упрощенно. Байты 'C2 A3' * вместе * образуют один символ Юникода, закодированный в UTF-8; 'String.fromCharCode' ожидает, что одна кодовая точка Unicode генерирует один символ. Выполнение двух отдельных байтов в строке не будет делать этого. Вы должны знать особенности кодирования UTF-8 при декодировании этого текста, чтобы убедиться, что вы декодируете '= C2 = A3' вместе в одно число, которое вы передаете' String.fromCharCode'. Это может быть довольно немного кода, я ожидаю, что там будут библиотеки, уже доступные для таких вещей. – deceze
gotcha благодарит за вашу помощь - вы только что разрешили работу в течение нескольких дней! – user3780104