[Scala] Base64 編碼。

因為剛好要用到 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)

回響