1,什么是字符值引用 (1)字符值引用 (numeric character reference, NCR) 是在标记语言SGML以及派生的如HTML与XML中常见的一种转义序列结构,用来表示Unicode的通用字符集 (UCS)中的单个字符. NCR可以表示在一个特定文档中不能直接编码的字符,而该标记语言阅读器软件把每个NCR当作一个字符来处理。 (2)我们可以将其理解为HTML、XML 等 SGML 类语言的转义序列(escape sequence)。而不是一种编码或转码。
2,字符值引用的格式 以「」开头的后接十六进制数字。或者以「」开头的后接十进制数字。
中国 //中国(16进制格式)
中国 //中国(10进制格式)
(不管哪种形式写在html页面中都会正常显示出“中国”)
3,将普通字符串转为字符值引用 由于Swift不提供原生的方法,那么我们通过扩展String类来实现
extension String {
//转译成字符值引用(NCR)
func toHtmlEncodedString() -> String {
var result:String = "";
for scalar in self.utf16 {
//将十进制转成十六进制,不足4位前面补0
let tem = String().stringByAppendingFormat("%04x",scalar)
result += "\(tem);";
}
return result
}
}
使用:
let words = "欢迎来到 hangge.com"
print(words.toHtmlEncodedString())
//欢迎来到 hangge.com
4,将字符值引用转位普通字符串 同样先扩展String类
extension String {
init(htmlEncodedString: String) {
do {
let encodedData = htmlEncodedString.dataUsingEncoding(NSUTF8StringEncoding)!
let attributedOptions : [String: AnyObject] = [
NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding
]
let attributedString = try NSAttributedString(data: encodedData,
options: attributedOptions, documentAttributes: nil)
self.init(attributedString.string)
} catch {
fatalError("Unhandled error: \(error)")
}
}
}
使用:
let words = String(htmlEncodedString: "欢迎来到 hangge.com")
print(words)
本文链接:https://it72.com:4443/7023.htm