此String是base64编码的字符串:
NSString *string=@"ë§ë ë¼ì´";
这不显示原始字符串:
NSLog(@"String is %@",[string cStringUsingEncoding:NSMacOSRomanStringEncoding]);
答案 0 :(得分:2)
这不是Base64编码的字符串。您的代码还有其他一些事情:
您不能在字符串常量中包含文字非ASCII字符;相反,你必须使用组成字符的字节,前缀为\x
;或者在Unicode的情况下,您可以使用前缀为\u
的Unicode代码点。所以你的字符串看起来应该像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 :(得分:0)
那是因为Mac OS Roman与base-64编码完全不同。 Base-64编码是应用表示原始字符串的字节的进一步编码。如果要查看原始字符串,首先需要对字节串进行base-64解码,然后找出原始字符串编码才能解释它。