Nodejs Base64 Url Safe
一、關於Base64編碼: 雖然常用卻沒注意過,一般Base64,包含英文字母A-Z、a-z、數字0-9,這樣62個字元,然後呢,這樣還少2個字元才64個,這另外兩個就是+、/兩個符號,最後呢,編碼完成依據狀況會補上=,詳細的說明可以參考wiki。 https://zh.wikipedia.org/wiki/Base64 之前使用的情境通常是在http的header中使用,比如oauth相關的應用,可是當打算於url中使用base64編碼時,就可以發生問題了,因為編碼中包含了"+"跟"/",於QueryString使用需在編碼過,在Restful的api使用時,"/"更是會造成url路徑錯誤。 針對這個問題,Base64有一個變種,通常會說是URL and Filename Safe Alphabet,符合 RFC4648, Section 5. 規範,這個規範將"+"、"/"至換成"-"、"_",並移除最後的"=" 二、Nodejs的Base64 encode與decode 在Nodejs常這樣用 var code = new Buffer ( "Base64是一種基於64個可列印字元來表示二進位資料的表示方法" ). toString ( 'base64' ); //code:QmFzZTY05piv5LiA56iu5Z+65pa8NjTlgIvlj6/liJfljbDlrZflhYPkvobooajnpLrkuozpgLLkvY3os4fmlpnnmoTooajnpLrmlrnms5U= console . log ( "code:" + code ); var decode = new Buffer ( code , 'base64' ). toString (); //decode:Base64是一種基於64個可列印字元來表示二進位資料的表示方法 console . log ( "decode:" + decode );