こちょこちょブログ

プログラミングとか学んだことの備忘録ブログです。

SwiftでBase64エンコードしたときに改行コードが入ってハマった

新年早々めでたくハマって、

f:id:kmatz90:20160109171157j:plain

こんな顔になったので、メモしておきます。

 

Xcodeのバージョン:7.1

Swiftのバージョン:2.1

 

ちなみにBase64とは?

データを64種類の印字可能な英数字のみを用いて、

それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。

MIMEによって規定されていて、

7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。

- Wikipedia

 

改行コードを正規表現で削除(置換)する

SwiftBase64エンコードした場合、

「64文字」ごとに改行コードが入るようなので、

正規表現で改行コードを削除して対応しました。

MIMEの基準では「76文字」ごとと書いてあるんですけどね。

具体的なコードは下記です。

含まれていたのは「\r\n」でしたが、

念のため「\n」も消せるようにしておきました。

 

※追記

KishikawaKatsumiさんにコメントでご指摘頂きました通り、

encStr!.base64EncodedStringWithOptions([])

で改行を含まないようにできました!

オプションを空で指定する方法を知りませんでした。。

なので、正規表現とかわざわざ使わなくて大丈夫です。。

その他の疑問も丁寧に説明をして頂いて、大変助かりました。

 

詳解 Swift 改訂版

詳解 Swift 改訂版