【发布时间】:2019-10-02 06:59:12
【问题描述】:
我正在使用 url 请求从 MySQL 接收数据。 数据以 JSON 格式接收。 此数据还包括 unicode 字符(例如希腊字母)。
然后,在 Swift 中,我像这样使用 JSONSerialization:
if let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [String: Any] {
json 的键是数字索引。 然后我使用这样的嵌套字典:
let dictionary = json[key] as? [String: Any]
然后我分配:
var content = dictionary!["content"] as! String
此内容中包含 unicode 字符。
Unicode 字符看起来像这样(如果我打印字典): \U03b1(用于希腊字母 Alpha)。
问题在于 Swift 无法读取这些字符,因为 Swift 期望 unicode 字符是这样的:\u{03b1}。
content的值为空字符串:""
我该如何解决这个问题? 要么让 PHP 以 Swift“理解”它们的方式发送这些字符,要么让 Swift 以正确的方式解码传入的数据。
有什么想法吗?
谢谢!
【问题讨论】:
-
Swift 和 JSONSerialization 可以 毫无问题地处理 Unicode 转义。但是,服务器应该发送带有小写 u 的
\u03b1。 -
@MartinR 它确实返回 \u03b1 但 Swift 无法将其正确读取为字符串实体,因为它不理解没有大括号的 \u。有什么想法吗?
-
这很可能只是默认情况下如何打印 dictionary(或 array)的工件。提取字符串值并打印出来。
-
@MartinR 谢谢!我没有考虑。将其分配给字符串时,我只是收到一个错误: var content = dictionary["content"] as!细绳。我应该以不同的方式分配吗?
-
什么错误?请更具体。
标签: php json swift serialization unicode