此字符串是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