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を作成する方法について解説しました。 皆さまのお仕事のお役に立てれば幸いです。