LoginSignup
24
15

More than 5 years have passed since last update.

【Swift3】日本語を含むURLをNSURLに

Last updated at Posted at 2016-12-26

OSX El Capitan(10.11.6)
Xcode 8.2
Swift version 3.0.2
を使用しております。

ある画像ファイルをダウンロードしようと
StringをNSURLにしたところ
ダウンロードされない。*URLは偽物です。

test.swift
   let fugaStringURL:String = "http://fugafuga/kokono/この画像だ.png"
   let encURL = NSURL(string:fugaStringURL)
   print("fugaStringURL=\(fugaStringURL)")
   print("encURL =\(encURL)")

表示結果:

fugaStringURL=http://fugafuga/kokono/この画像だ.png
encURL =nil

printしてみるとnil。
おかしい。URL自体は合っている模様。

どうやらSwift3になり変わったようです。

test2.swift
   let fugaStringURL:String = "http://fugafuga/kokono/この画像だ.png"
   let encURL = NSURL(string:fugaStringURL.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)!)
   print("fugaStringURL=\(fugaStringURL)")
   print("encURL =\(encURL)")

表示結果:

fugaStringURL=http://fugafuga/kokono/この画像だ.png
encURL =Optional(http://fugafuga/kokono/%E3%81%93%E3%81%AE%E7%94%BB%E5%83%8F%E3%81%A0.png)

きちんと変換されています。
日本語が含まれるURLには注意が必要ですね。

ついでにその逆は

test3.swift
   let nsStr = encURL?.absoluteString
   let decodedString:String = nsStr!.removingPercentEncoding!
   print("nsStr=\(nsStr)")
   print("decodedString =\(decodedString)")

表示結果:

nsStr=Optional(\"http://fugafuga/kokono/%E3%81%93%E3%81%AE%E7%94%BB%E5%83%8F%E3%81%A0.png\")
decodedString =http://fugafuga/kokono/この画像だ.png

忘れそうなの書き留めておきます。

24
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
15