2016-12-31 14 views
1

Внутри метода React Native Я получаю XML-код, закодированный в ISO-8859-1.Кодирование преобразования ответа выборки

Пока выборка завершена, я пытаюсь преобразовать ее в UTF-8.

Вот код:

const iconv = require('iconv-lite'); 

fetch('http://www.band.uol.com.br/rss/colunista_64.xml', { 
     headers: { 
     "Content-type": "text/xml; charset=ISO-8859-1" 
     } 
}) 
.then(res=>res.text()}) 
.then(text => { 
    const decodedText = iconv.decode(Buffer.from(text, 'latin1'), 'latin1') 
    , output = iconv.encode(decodedText, 'utf8') 
    console.log(output.toString()) 
}) 

Проблема заключается в том: все особенные символы тела заменяется «¿½»

Для преобразования я использую пакет iconv-lite

Какое лучшее обходное решение этой проблемы?

ответ

1

Лучшим решением является использование res.arrayBuffer() вместо res.text(), пока конструктор Buffer принимает ArrayBuffer

Код:

fetch('http://www.band.uol.com.br/rss/colunista_64.xml') 
     .then(res => res.arrayBuffer()) 
     .then(arrayBuffer => iconv.decode(new Buffer(arrayBuffer), 'iso-8859-1').toString()) 
     .then(converted => console.log(converted))