2013-10-04 4 views
3

У меня строка, закодированная в XYZ, и я хочу закодировать ее в UTF8. Я смотрю на буфер, но он не поддерживает ничего, кроме ASCII, Hex, Base64 и UTF8, поэтому я не могу передать ему строку, которую я должен преобразовать в буфер.Декодирование от XYZ и кодирование до UTF8

Мой текущий код (используя Iconv-Lite) является:

buffer = new Buffer(str, charset); <------ will fail as charset is ISO-8859-1 (it could be any other charset anyways) 
str = iconv.decode(buffer, charset); 
str = iconv.encode(buffer, 'utf8').toString('utf8'); 

Я пытаюсь избежать Iconv, как это PITA для Windows. Любое другое решение pure-javascript будет хорошо для меня.

+0

_FileReader's_ ['readAsText'] (https://developer.mozilla.org/en-US/docs/Web/API/FileReader#readAsText%28%29) может оказаться полезным. Не уверен, что поддерживается в _Node.js_. –

+0

@PaulS. Я не уверен, что вы предлагаете. Я делаю это внутри Node.JS, и это ссылка для веб-API Firefox. – alexandernst

+0

Это на самом деле часть [W3C's _File API_] (http://www.w3.org/TR/FileAPI/#readAsDataText) –

ответ

0

Это пример кодирования/декодирования

var str = "11afe0bc36d62793bacbe46ef809a3f8de86bfdf1fc901d664c2f740ce51947c"; 
    var charset = "hex"; 
    var buffer = new Buffer(str, charset); 
    var utf8String = buffer.toString(charset); 
    console.log(buffer); 
    console.log(utf8String); 

будет написать:

  1. линия: < Буфер 11 аф е0 Ьс 36 d 6 27 93 BA CB E4 6e F8 09 a3 f8 де 86 БФ DF 1f с9 01 d 6 64 40 с2 f7 се 51 94 7c>

2. линия: 11afe0bc36d62793bacbe46ef809a3f8de86bfdf1fc901d664c2f740ce51947c

+0

Что делать, если у меня нет hex/двоичного буфера, но строка с неподдерживаемой кодировкой Buffer? – alexandernst

Смежные вопросы