将数据字符串转换为 UTF8 的问题

Posted

技术标签:

【中文标题】将数据字符串转换为 UTF8 的问题【英文标题】:Issue with converting data string to UTF8 【发布时间】:2016-07-15 10:17:59 【问题描述】:

我正在使用 JSON 获取一些数据,但是当我获取数据时,names 字符串是这样的:


    code = 200;
    found = 1;
    name = "\\u0635\\u0641\\u062d\\u0647 \\u0631\\u0633\\u0645\\u06cc \\u0633\\u0627\\u06cc\\u062a \\u0648\\u0631\\u0632\\u0634 \\u06f3";

如何解决?我试图将其转换为 UTF8 编码,但仍然没有!我不得不说 URL 在 Safari 中使用 UTF8 编码可以正常工作

这是我的代码:

   let userURL: String = "https://myurl.com/xxx"
        let ut8 = userURL.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())

        NSURLSession.sharedSession().dataTaskWithURL(NSURL(string:ut8!)!, completionHandler:  (data, response, error) -> Void in
            // Check if data was received successfully
            if error == nil && data != nil 
                do 
                    if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary 
                       print(jsonResult)
    

.....

问题已解决:服务器出现问题,现已修复

【问题讨论】:

这不是 JSON 字符串,它是字典表示。您确定 JSON 包含那些 Unicode 令牌吗? @vadian 我只是编辑我的 Q 标题 不要转换 name 字符串并将其分配给 UILabel 的 text 属性。会发生什么? 您的问题是什么?看来您已成功收到您的 JSON 数据作为 NSDictionary。试试print(jsonResult["code"], jsonResult["found"], jsonResult["name"]) @vadian 同样的事情,实际上我将此字符串传递给标签 【参考方案1】:

这正是print 方法输出的内容,它有时会出现编码问题。在 UI 中呈现这些文本时应该没问题。

【讨论】:

【参考方案2】:

在 Swift 中将数据字符串转换为 UTF8 字符串

yourNSStringObject.utf8

在 Objective C 中使用将数据字符串转换为 UTF8 字符串

[yourNSStringObject UTF8String];

【讨论】:

以上是关于将数据字符串转换为 UTF8 的问题的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 将 latin1 数据转换为 UTF8

如何将 utf8 字符串转换为 utf8 字节数组?

将属性文本转换为 UTF8 字符串?

如何将 UTF8 组合字符转换为 ruby​​ 中的单个 UTF8 字符?

如何将 UTF8 字符串转换为字节数组?

MySQL 数据库 - 将字符集和排序规则转换为 utf8mb4 和 utf8mb4_unicode_ci?