前提・実現したいこと
Swift4でiosアプリを作っています.現在REST APIをGETしてレスポンスを画面に表示したいのです.
GETでの取得まではできたのですが,/u2949 のようなスカラ値になってしまっています.
この値から日本語に戻す方法を知りたいです.
現在の出力
"\u90e8\u5ba4\u306f\u958b\u3044\u3066\u308b\u3088\uff01"
期待する出力
"部室は開いてるよ!"
該当のソースコード
swift
1 2 var body = "" 3 let url = URL(string: "XXXX.com/dev") 4 let request = URLRequest(url: url!) 5 let session = URLSession.shared 6 session.dataTask(with: request) { (data, response, error) in 7 if error == nil, let data = data, let response = response as? HTTPURLResponse { 8 // HTTPヘッダの取得 9 print("Content-Type: (response.allHeaderFields["Content-Type"] ?? "")") 10 // HTTPステータスコード 11 print("statusCode: (response.statusCode)") 12 body = String(data:data, encoding: String.Encoding.utf8) ?? "" 13 print(String(data: data, encoding: String.Encoding.utf8) ?? "") 14 //labelにレスポンスのdataを表示したい 15 self.KeyStatus.text = String(body.utf8) 16 } 17 }.resume() 18
試したこと
.utf8をつけて変換を試しましたがダメでした.
補足情報(FW/ツールのバージョンなど)
Xcode9 Swift
print(data.map {String(format: "%02x", $0)}.joined(separator: "")) の出力を教えて下さい。
7b22737461747573436f6465223a203230302c2022626f6479223a20225c75393065385c75356261345c75333036665c75393538625c75333034345c75333036365c75333038625c75333038385c7566663031227d
です.よろしくお願いいたします.
サーバから "\u90e8" の形で送られてきているので、サーバ側で対応しないといけないのではないでしょうか?(この辺よく知らないので)それとも、サーバ側は変えられないので、こっち側で対応しないといけないということでしょうか?
fuzzball様 ありがとうございます。サーバー側はAWS LAMBDAのpythonなのですが、そちらのコンソールですと日本語で表示されます。
pythonは \uxxxx ですが、Swiftは \u{xxxx} なのです。
!!!なるほど!!!すぐやってみます!!
あ、すみません。これJSONで受け取ってるのにJSONとして扱ってないのでは?

回答1件
あなたの回答
tips
プレビュー