【问题标题】:Swift, php and unicode charactersSwift、php 和 unicode 字符
【发布时间】: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


【解决方案1】:

对于多个货币符号,我确实有同样的问题。 API 团队现在正在传递 '\u0024' 并已解决 Swift 中的问题。也许您可以从 API 方面尝试相同的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    相关资源
    最近更新 更多