Swift开发将中文转换成字符值引用

Home / iOS MrLee 2015-11-30 3016

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 += "&#x\(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://www.it72.com/7023.htm

推荐阅读
最新回复 (0)
返回