此字符串是base64编码字符串:NSString的解码问题
NSString *[email protected]"ë§ë ë¼ì´";
这是不显示原单串:
NSLog(@"String is %@",[string cStringUsingEncoding:NSMacOSRomanStringEncoding]);
此字符串是base64编码字符串:NSString的解码问题
NSString *[email protected]"ë§ë ë¼ì´";
这是不显示原单串:
NSLog(@"String is %@",[string cStringUsingEncoding:NSMacOSRomanStringEncoding]);
这是因为的Mac OS罗马没有像base64编码。 Base-64编码是应用表示原始字符串的字节的进一步编码。如果你想看到原始字符串,你首先需要base-64解码bytestring,然后找出原始字符串编码来解释它。
这不是Base64编码的字符串。还有一些其他事情与您的代码一起进行:
您不能在字符串常量中包含文字非ASCII字符;相反,您必须使用组成字符的字节,前缀为\x
;或者在Unicode的情况下,您可以使用Unicode代码点,前缀为\u
。所以你的字符串应该看起来像NSString *string = @"\x91\xa4\x91 \x91\x93";
。但是...
字符¼
和´
不是MacRoman编码的一部分,因此您在使用它们时会遇到问题。你确定你想要一个MacRoman字符串,而不是一个Unicode字符串吗?无论如何,没有多少应用程序使用MacRoman。
cStringUsingEncoding:
返回一个C字符串,应印有%s
,不%@
,因为它不是一个Objective-C的对象。
这就是说,你的代码将整理工作具有:
// Using MacRoman encoding in string constant
NSString *s = @"\x91\xa4\x91 \x91\x93";
NSLog(@"%s", [s cStringUsingEncoding:NSMacOSRomanStringEncoding]);
我说“之类的工作”,因为,同样,你不能代表的MacRoman代码。
+1,除了#1点错误。你可以在一个常量'NSString'中包含非ASCII字符 – 2010-10-27 17:50:15
'''''''''* * *不是* Base64编码。 – 2010-10-27 16:35:40