HOME > 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以前は違う処理になりますので、その場合は上記の参考リンクをご参照ください。
2021-05-14 14:21:41 | WatchOSのwatchconnectivityのFiletransferの落とし穴。と、避け方。
AppleWatch 実機だと成功するんだけど、シュミレーターだと失敗するという、、、
昔作成してた時は成功してたのになーと思って調べると、どうやら昔は成功してたみたい。watchOS6以降は... |
2021-05-06 14:04:37 | LINEのアニメーションスタンプ制作の落とし穴、、、失敗談
ゴールデンウィークにLINEスタンプを作成してみました。
作り切って申請も通したんですが、意図したアニメーションと違う、、、、
LINEクリエーターの画面だと、アニメーションのプレビュー... |
2021-05-01 18:05:35 | 久しぶりのAdmobをobjective-cに実装。コンパイルエラーだらけ。バーミッション不具合でエミュレータにインスコできない。
忘れないようにメモ
エミュレータにアプリをインストールする際にパーミッション系のエラーがでた時、また、iphone実機にインストールする際にも権限系のエラーが出る場合。
ターゲット→ex... |
Tweet | |||
|