You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中打印含中文的NSDictionary:如何将Unicode转为中文显示?

解决Swift中NSDictionary打印中文显示Unicode的问题

哈哈,这个坑我踩过好多次!在Swift里直接打印NSDictionary时,Xcode控制台总会把中文转成一堆\u开头的Unicode编码,看着特别费劲。给你几个亲测有效的解决办法,按需选用:

方法一:转成Swift原生Dictionary再打印

Swift的原生Dictionary对中文的支持更友好,直接打印就能显示正常中文。只需要把NSDictionary强制转换为Swift字典即可:

// 假设你有一个带中文的NSDictionary
let nsDict: NSDictionary = ["username": "李四", "hobby": "编程"]
// 转换为Swift原生字典
let swiftDict = nsDict as! [String: Any]
// 直接打印
print(swiftDict)

输出结果会直接显示中文:["username": "李四", "hobby": "编程"]

方法二:给NSDictionary写扩展,自定义打印方法

如果不想每次都手动转换,可以给NSDictionary写一个扩展,通过JSON序列化来输出中文。这个方法还能格式化输出,结构看起来更清晰:

extension NSDictionary {
    /// 打印NSDictionary中的中文内容
    func printWithChinese() {
        do {
            // 将NSDictionary转为JSON数据,开启格式化选项
            let jsonData = try JSONSerialization.data(withJSONObject: self, options: .prettyPrinted)
            // 将JSON数据转为UTF-8字符串
            if let jsonStr = String(data: jsonData, encoding: .utf8) {
                print(jsonStr)
            } else {
                // 转换失败时 fallback 到默认打印
                print(self)
            }
        } catch {
            print("转换失败:\(error.localizedDescription)")
        }
    }
}

// 使用示例
let nsDict: NSDictionary = ["book": "Swift从入门到精通", "price": 89.9]
nsDict.printWithChinese()

输出的格式化字符串会清晰显示中文:

{
  "book" : "Swift从入门到精通",
  "price" : 89.9
}

方法三:调试时用LLDB命令临时查看

如果只是调试时想快速查看中文,不想修改代码,可以在Xcode控制台的LLDB中输入以下命令:

po NSString(stringWithFormat:@"%@", yourNSDictionaryVariableName)

把yourNSDictionaryVariableName换成你实际的变量名,就能直接看到中文内容了。

小科普:为什么会显示Unicode?

其实就是NSDictionary的默认debugDescription实现,会把非ASCII字符转成Unicode编码输出;而Swift原生Dictionary则是直接用UTF-8编码处理中文,所以打印结果会不一样。

内容的提问来源于stack exchange,提问作者JsonKit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:29:57