2013-10-04 219 views
3

我有一个字符串在XYZ编码,我想编码为UTF8。我正在看缓冲区,但它不支持除ASCII,Hex,Base64和UTF8以外的任何其他内容,所以我无法为它提供必须将其转换为缓冲区的字符串。解码从XYZ和编码为UTF8

我当前的代码(用iconv-精简版)是:

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因为这是一个用于Windows的PITA。任何其他纯粹的javascript解决方案都适合我。

+0

_FileReader's_ ['readAsText'](https://developer.mozilla.org/en-US/docs/Web/API/FileReader#readAsText%28%29)可能会有帮助。不过,不确定它在_Node.js_中的支持程度。 –

+0

@PaulS。我不确定你的建议。我在Node.JS中这样做,这是Firefox的Web API的链接 – alexandernst

+0

它实际上是[W3C的_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 AF E0 BC 36 D6 27 93 BA CB E4 6E F8 09 A3 F8德86 BF DF 1F C9 01 D6 64 C2 40 F7 51 CE 94 7C>

2.行:11afe0bc36d62793bacbe46ef809a3f8de86bfdf1fc901d664c2f740ce51947c

+0

如果我没有十六进制/二进制缓冲区,但是缓冲区不支持字符集的字符串,该怎么办? – alexandernst