Swift 快速UTF8编码和非UTF8字符

Swift 快速UTF8编码和非UTF8字符,swift,string,utf-8,Swift,String,Utf 8,我从json文件中找到了一些文本。在本文中,我应用了UTF8编码,但这个编码器不识别非标准字符和大写字符,有没有方法净化我的字符串 我的职能: func stringToUTF8String (stringaDaConvertire stringa: String) -> String { let encodedData = stringa.dataUsingEncoding(NSUTF8StringEncoding)! let attributedOptions = [N

我从json文件中找到了一些文本。在本文中,我应用了UTF8编码,但这个编码器不识别非标准字符
和大写字符,有没有方法净化我的字符串

我的职能:

func stringToUTF8String (stringaDaConvertire stringa: String) -> String {
    let encodedData = stringa.dataUsingEncoding(NSUTF8StringEncoding)!
    let attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType]
    let attributedString = NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil, error: nil)!
    //println(attributedString.string)
    return attributedString.string
}
我找到了解决办法

UTF8采用8位ASCII表,UTF16采用16位ASCII表,通过将我的函数修改为:

func stringToUTF16String (stringaDaConvertire stringa: String) -> String {
    let encodedData = stringa.dataUsingEncoding(NSUTF16StringEncoding)!
    let attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType]
    let attributedString = NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil, error: nil)!
    //println(attributedString.string)
    return attributedString.string
}

String
为您提供了什么字节输出?你会期待什么?另外,我不确定您在StackOverflow中插入的非标准字符是否正确。请显示一个(短)输入字符串,说明问题以及实际输出和预期输出。是的,这是可行的,但我仍然不知道为什么dataUsingEncoding无法使用UTF8StringEncoding识别字符。在我的例子中,我验证了我的文件存储为UTF-8,因此
encodedData
应该包含正确的内容,我猜NSAttributedString使用UTF-16编码,毕竟这是NSString支持的唯一编码,但文档中对此并不清楚。我也遇到了同样的问题,并认为这一定是由于
nsattributestring
造成的。文档从未指定参数
数据
应该具有什么编码,但我认为我们已经验证了它必须是
NSUTF16StringEncoding
。基本的
NSString
是用UTF-16表示的,所以默认值是有意义的。也就是说,您可以指定
选项:[characterEncoding:NSUTF8StringEncoding]
来匹配传入数据。