2010-09-14 22:56 墳墓 (Brian Hsu)
因為剛好要用到 Base64 進行編碼,所以找了一下相關的 API,雖然 Scala 似乎並沒有內建 Base64 的 Encoder,但 Java 的 sun.misc.BASE64Encoder 這個類別已經足已應付大多數需要用到 Base64 的場合。
唯一的問題是這個 Encoder 類別在編碼的時候,他會自動斷行,以 72 個字元為一行,這會造成一些問題。例如在這次的使用中,我所編出來的東西是用在網址列的參數,所以不能有換行字元。
我去翻了 sun.misc.BASE64Encoder 的 API 與原始檔後,發現要解決這個問題,其實也很簡單,只要在 new 物件的時候將這個 Encoder 的 bytesPerLine() 方法給複寫掉就好了。
寫成 Scala 的函式後結果如下,這麼一來就可以很方便的使用 Base64 編碼,又不用去找其他 3rd Party 的函式庫啦。
def base64Encode (content: String) = { val encoder = new sun.misc.BASE64Encoder { override def bytesPerLine = 1000 // 重點在這,看一行要有幾個字元 } encoder.encode (content.getBytes) } val before = "Hello Base64 World" val encoded = base64Encode (before) println (encoded)
回響