Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > URLエンコードとデコード

URLエンコードとデコード

サーバとデータのやりとりをしているとURLエンコードしないと文字化けしちゃったりと問題がでる場合があります。 phpのurlencodeやurldecodeと連携させる場合等、Swift側でどうやってエンコードすれば良いかの方法を記載しております。

参考:文字列を URLエンコード・URLデコードする
参考:SwiftでURLエンコードする
参考:Objective-c iPhone percent encode a string?

やってみた

エンコード


     let testString = "Swiftサラリーマンですよ! テストです。";
     let encodedString = testString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())

     

デコード


     let testString = ""Swift%E3%82%B5%E3%83%A9%E3%83%AA%E3%83%BC%E3%83%9E%E3%83%B3%E3%81%A7%E3%81%99%E3%82%88%EF%BC%81%E3%80%80%E3%83%86%E3%82%B9%E3%83%88%E3%81%A7%E3%81%99%E3%80%82"";
     let decodedString = testString!.stringByRemovingPercentEncoding;
     


     let testString = "Swiftサラリーマンですよ! テストです。";
        
     let encodedString = testString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
     let decodedString = encodedString!.stringByRemovingPercentEncoding;
        
     println("\(encodedString) -> \(decodedString)");
     

上記を実行すると以下になります


Optional("Swift%E3%82%B5%E3%83%A9%E3%83%AA%E3%83%BC%E3%
83%9E%E3%83%B3%E3%81%A7%E3%81%99%E3%82%88%EF%BC%81%E3%80
%80%E3%83%86%E3%82%B9%E3%83%88%E3%81%A7%E3%
81%99%E3%80%82") -> Optional("Swiftサラリーマンですよ! テストです。")

エンコードすると日本語が意味不明な文字列になります。

カスタマイズ

encodeを二回かけて2回decodeするとどうなるのかやってみました。


        let testString = "Swiftサラリーマンですよ! テストです。";
        
        let encodedString = testString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
        let encodedString2 = encodedString!.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
        let decodedString = encodedString2!.stringByRemovingPercentEncoding;
        let decodedString2 = decodedString!.stringByRemovingPercentEncoding;
        
        println("\(encodedString) -> \(encodedString2) -> \(decodedString) -> \(decodedString2) ");
     

これを実行してみます


Optional("Swift%E3%82%B5%E3%83%A9%E3%83%AA%E3%83%BC%E3%
83%9E%E3%83%B3%E3%81%A7%E3%81%99%E3%82%88%EF%BC%81%E3%
80%80%E3%83%86%E3%82%B9%E3%83%88%E3%81%A7%E3%81%99%E
3%80%82") -> 
Optional("Swift%25E3%2582%25B5%25E3%2583%25A9%25E3%258
3%25AA%25E3%2583%25BC%25E3%2583%259E%25E3%2583%25B3%25
E3%2581%25A7%25E3%2581%2599%25E3%2582%2588%25EF%25BC%
2581%25E3%2580%2580%25E3%2583%2586%25E3%2582%25B9%25E3
%2583%2588%25E3%2581%25A7%25E3%2581%2599%25E
3%2580%2582") -> 
Optional("Swift%E3%82%B5%E3%83%A9%E3%83%AA%E3%83%BC%E3
%83%9E%E3%83%B3%E3%81%A7%E3%81%99%E3%82%88%EF%BC%81%E
3%80%80%E3%83%86%E3%82%B9%E3%83%88%E3%81%A7%E3%81%99%
E3%80%82") -> Optional("Swiftサラリーマンですよ! テストです。") 

二回encodeして、二回デコードしたらちゃんと戻りました。当たり前なのかもですが、ちょっとびっくりしました!

まとめ

iOS7以前は違う処理になりますので、その場合は上記の参考リンクをご参照ください。

↓こんな記事もありますよ!

GはGoogle他のアルファベットを勝手に妄想してみる

さて昨日はGoogleが衝撃的な発表でAlphabetという親会社をつくって、Googleはアルファベットの中のGがGoogleとの 位置づけで今後展開していくとの事。ネーミングもですが、今後の期待を大きく感じる、またわかりやすく好印象だったのか株価も 大きく上がったとのことでした。さて、その他残りのアルファベットはどんな風になるのかなぁと勝手に歩きながら妄想してみました。

SQLiteを使いたい。ラッパーを検証してみる。(#2)

前回の記事でSQLiteのラッパのRMDB, SWiftData,SQLite.swiftの検証をトライしまいたが、時間の問題で頓挫してしまいましたので続きです。 。ある程度準備が完了しましたので、それぞれのサンプルを動かしてみてみようと思います。InsertとSelectとインストール感を比較してみます。

willsetとdidsetでプロパティを監視。意味あるのか???

クラスのプロパティにはWillsetとdidsetという監視用の関数があると聞いたのですが、用途は分かるにしても メリットとしてはどういうものなのかなと、うーん、と考えていました。調べていると海外のサイトでは同じように疑問にもつ質問があがっていました。 getとsetで同じことができるのでは?との私と同じスタンスです。解決されていましたので、順に説明していきます。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!