2013-10-04 139 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