我正在从网站提取JSON文件,收到的字符串之一是:
The Weeknd ‘King Of The Fall’ [Video Premiere] | @TheWeeknd | #SoPhi
如何将类似的内容‘
转换为正确的字符?
我创建了一个Xcode Playground来演示它:
import UIKit
var error: NSError?
let blogUrl: NSURL = NSURL.URLWithString("http://sophisticatedignorance.net/api/get_recent_summary/")
let jsonData = NSData(contentsOfURL: blogUrl)
let dataDictionary = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) as NSDictionary
var a = dataDictionary["posts"] as NSArray
println(a[0]["title"])
这个答案最近针对Swift 5.2和iOS 13.4 SDK进行了修订。
没有做到这一点的直接方法,但是您可以使用NSAttributedString
魔术使此过程尽可能轻松(请注意,此方法也将剥离所有HTML标记)。
记住 仅从主线程 初始化NSAttributedString
。它使用WebKit解析下面的HTML,因此是必需的。
// This is a[0]["title"] in your case
let encodedString = "The Weeknd <em>‘King Of The Fall’</em>"
guard let data = htmlEncodedString.data(using: .utf8) else {
return
}
let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [
.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue
]
guard let attributedString = try? NSAttributedString(data: data, options: options, documentAttributes: nil) else {
return
}
// The Weeknd ‘King Of The Fall’
let decodedString = attributedString.string
extension String {
init?(htmlEncodedString: String) {
guard let data = htmlEncodedString.data(using: .utf8) else {
return nil
}
let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [
.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue
]
guard let attributedString = try? NSAttributedString(data: data, options: options, documentAttributes: nil) else {
return nil
}
self.init(attributedString.string)
}
}
let encodedString = "The Weeknd <em>‘King Of The Fall’</em>"
let decodedString = String(htmlEncodedString: encodedString)
问题内容: 我正在尝试解码一些HTML实体,例如变为。 我有一个古老的宝石(html_helpers),但它似乎已经被抛弃了两次。 有什么建议吗?我将需要在模型中使用它。 问题答案: HTMLEntities可以做到:
问题内容: 我需要解码HTML实体,例如来自&#246; 到ö和&amp; 至 &。 没有完成这项工作(从%表示法转换)。TextUtils具有HTMLencode,但没有HTMLdecode。 有解码HTML实体的功能吗? 问题答案: 该HTML的class是应该做的,但它是说,一切都没有支持。它总是对我有用,但是我从来没有过,所以我不能告诉你这个。尝试获取解码后的字符串。
问题内容: 在Swift中,我使用解码HTML ,如下所示: 但是结果是这样的: 摆脱水坝»数十个»贸易促进»™返回 真实结果必须与 这种方法有什么问题? 问题答案: 您必须在文档选项中指定使用的字符 编码 : (已为Swift 4更新)
问题内容: 如何使用角度JS解码文本中的HTML实体。 我有绳子 我需要一种使用AngularJS对此进行解码的方法。我在这里找到了一种使用javascript做到这一点的方法,但是我敢肯定那对Angular无效。需要找回UI上的原始字符串 问题答案: 您可以使用 指令将其显示为html内容,并解码所有html实体。只要确保 在您的应用程序中包括依赖项即可。 演示 JAVASCRIPT HTML
问题内容: 如何使用jQuery解码字符串中的HTML实体? 问题答案: 安全说明: 使用此答案(下面以其原始形式保留)可能会在您的应用程序中引入XSS漏洞。您不应该使用此答案。 阅读lucascaro的答案以获取对该答案中漏洞的解释,然后改用该答案或MarkAmery的答案中的方法。 其实试试看
问题内容: 如何使用JavaScript或JQuery编码和解码HTML实体? 我希望它是: 问题答案: 您可以尝试类似: 更具交互性的版本: