我是Objective-C
的新手,在这里我遇到了stringWithUTF8String
类方法。
所以,我在苹果开发者库中搜索方法,然后我来到了这句话
返回通过从给定的UTF8编码字节的C数组复制数据而创建的字符串。
在阅读之后,我对句子的说法一无所知。
我觉得阅读苹果开发者库很难理解。 有人可以提供一些方法应用的简单代码示例。
答案 0 :(得分:4)
它只是从utf8编码的(http://en.wikipedia.org/wiki/UTF8)c字符串(char *)创建一个Cocoa NSString。
const char* cstr = "I am a c string";
NSString* str = [NSString stringWithUTF8String:cstr];
答案 1 :(得分:2)
NSString *s = [NSString stringWithUTF8String:"Long dash symbol \xe2\x80\x94"];
NSLog(@"%@",s);
UTF8编码的字符串被视为C字节数组,因此要将它们转换为字符串,您可以使用此方法。
答案 2 :(得分:2)
所以听起来你遇到了NSString支持的丰富性和复杂性。这是一个深刻的主题。
所有字符串实际上都存储为某种数组,并具有将数组元素值映射到字符的编码。
NSString在大多数时候都很好地隐藏了这种复杂性,因为它很难学习并且很难手动完成,很少有人能够做到。在大多数情况下不必考虑它并做其他事情也更有趣。
但是,NSString在内部保留了一系列Unichars。当您从另一个不是NSString的外部源的字符串创建字符串时,您需要知道编码。否则垃圾在垃圾里出来。
UTF8恰好非常强大,对字节顺序等不敏感,因此它在Web和XML中得到了广泛采用。 它并非适用于所有情况,因此平台本机框架倾向于使用UTF16或32进行某些优化。
您可能会说这是文件的编码。 (可怕的概括)和UTF16和32及其字节顺序问题是硬件特定处理能力的编码。 (另一个不好的概括)
维基百科在Unicode编码和特别是UTF8上有很好的参赛作品。
这是开始冒险的好地方。
答案 3 :(得分:1)
文档很清楚。您可以从C类型创建Objective C对象,即您可以将C数组转换为NSString(Objective C对象)。你可以用它和例如With和NSData这样的对象:
NSDAta *data = ....
NSString *myString = [NSString stringWithUTF8String:[data bytes]];