如何在Node.js中encode一個字元串呢?是否也像在PHP中使用base64_encode()一樣簡單? 在Node.js中有許多encoding字元串的方法,而不用像在JavaScript中那樣定義各種不同的全局函數。下麵是如何在Node.js中將一個普通字元串encode成Base64格式 ...
如何在Node.js中encode一個字元串呢?是否也像在PHP中使用base64_encode()一樣簡單?
在Node.js中有許多encoding字元串的方法,而不用像在JavaScript中那樣定義各種不同的全局函數。下麵是如何在Node.js中將一個普通字元串encode成Base64格式的代碼:
var b = new Buffer('JavaScript'); var s = b.toString('base64'); // SmF2YVNjcmlwdA==
下麵是decode base64字元串的代碼:
var b = new Buffer('SmF2YVNjcmlwdA==', 'base64') var s = b.toString(); // JavaScript
如果你想瞭解上面代碼的實現細節,請接著往下看。
構造函數new Buffer()的第一個參數可以是一個Number,Array或String。第二個參數為可選參數,用來表示encode的類型,可以是AscII, Utf8, Ucs2, Base64, Binary, 或Hex。預設值是Utf8。
通過第二個參數,告訴程式給定的字元串是以哪種特定格式被encode的。註意上面decode的例子中我們傳入的參數。
我們通過toString()方法將encode的字元串轉換成其它格式,預設為Utf8。指定不同的參數,可以轉換成我們想要的格式。例如我們可以將Base64之後的字元串轉換成Hex格式:
var b = new Buffer('SmF2YVNjcmlwdA==', 'base64') var s = b.toString('hex'); // 4a617661536372697074
然後通過下麵的方式將其decode成人類能看懂的字元串:
var b = new Buffer('4a617661536372697074', 'hex') var s = b.toString('utf8'); // JavaScript
一旦掌握了基本的Buffer和encode,我們就可以通過Node.js的File module將文件encode成Base64字元串。
var fs = require('fs'); // function to encode file data to base64 encoded string function base64_encode(file) { // read binary data var bitmap = fs.readFileSync(file); // convert binary data to base64 encoded string return new Buffer(bitmap).toString('base64'); } // function to create file from base64 encoded string function base64_decode(base64str, file) { // create buffer object from base64 encoded string, it is important to tell the constructor that the string is base64 encoded var bitmap = new Buffer(base64str, 'base64'); // write buffer to file fs.writeFileSync(file, bitmap); console.log('******** File created from base64 encoded string ********'); } // convert image to base64 encoded string var base64str = base64_encode('kitten.jpg'); console.log(base64str); // convert base64 string back to image base64_decode(base64str, 'copy.jpg');
PS:Utf8是AscII的超集。如果你只能使用標準英文鍵盤上的字元,則可以使用AscII編碼;但是如果你正在處理其它“外來”字元或符號,例如⌘, こんにちは, Üdvözöljük等,請使用Utf。