日本語を含むURLからNSURLを作成する方法 (Swift)

投稿者 : OSCA

 RSSで取得したURLを扱う処理を書いていたところ、日本語を含むURLを処理をしようとしたところエラーが発生しました。 そんな場合の対処方法を記します。

問題

 次のような処理を記述していたところ、NSURLが nil になってしまいました。 理由は引数で与えた url 文字列に日本語を含んでいた為でした。

var url = "https://sample.jp/サムネイル.jpg"
var nsurl = NSURL(string:url)

解決方法

 Swift 3 以降の解決方法としては、String クラスの addingPercentEncoding() メソッドを利用することで、文字列中の日本語をパーセントエンコーディングしてくれます。 修正後のソースコードは次のようになります。

var url = "https://sample.jp/サムネイル.jpg"
var encurl = url.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)
var nsurl = NSURL(string:url)

 変数 url と encurl をそれぞれ出力してみると、次のようになります。

url : https://sample.jp/サムネイル.jpg
encurl : https://sample.jp/%E3%82%B5%E3%83%A0%E3%83%8D%E3%82%A4%E3%83%AB.jpg

おわりに

 本稿では日本語を含むURLからNSURLを作成する方法について解説しました。 皆さまのお仕事のお役に立てれば幸いです。

著者 : OSCA

OSCA

 初級WEBエンジニアです。最近は Android, iOS, WEBアプリの作成に力を入れています。 個人として何か一つでも世の中の多くの人に使ってもらえるアプリを作ろうと日々奮闘中です。
@engineer_osca