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

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

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


『 Swift 』Article List