ios开发之将中文转换成字符串_ios开发之将中文转换成字符值引用 (numeric character reference, NCR)

更新时间:2020-03-23    来源:ios    手机版     字体:

【www.bbyears.com--ios】

1,什么是字符值引用

(1)字符值引用 (numeric character reference, NCR) 是在标记语言SGML以及派生的如HTML与XML中常见的一种转义序列结构,用来表示Unicode的通用字符集 (UCS)中的单个字符. NCR可以表示在一个特定文档中不能直接编码的字符,而该标记语言阅读器软件把每个NCR当作一个字符来处理。
(2)我们可以将其理解为HTML、XML 等 SGML 类语言的转义序列(escape sequence)。而不是一种编码或转码。 

2,字符值引用的格式

以「&#x」开头的后接十六进制数字。或者以「&#」开头的后接十进制数字。


中国  //中国(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)

本文来源:http://www.bbyears.com/shoujikaifa/89097.html

热门标签

更多>>

本类排行