Swift 快速UTF8编码和非UTF8字符
我从json文件中找到了一些文本。在本文中,我应用了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
和大写字符,有没有方法净化我的字符串
我的职能:
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]
来匹配传入数据。