人生最曼妙的风景,竟是内心的淡定与从容!
這確實不是二進制,是unicode 編碼,可以在使用lldb 中使用p 命令或在shell 中使用echo 命令打印這些編碼,均可打印出可讀的中文。 p 命令或在 shell 中使用 echo 命令打印这些编码,均可打印出可读的中文。
p
echo
从 iOS 5 开始(没有验证,但早期打印数组和字典均和现在打印对象的显示一致,<名称:内存地址>),打印数组和字典显示出具体的数据结构(description 方法),更方便了调试,但其中打印字符串时并未做任何处理(如此处的字符转义)。由于只是便于调试,而且打印具体字符串时,调用字符串的 desciption 方法时,会转义为可读中文,也就是到具体处理的时候会自动转义,不用也不应该自己去转。
description
desciption
非得在控制台显示中文的话可以这样,NSLog(@"%@",[NSString stringWithCString:[[dictionary description] cStringUsingEncoding:NSUTF8StringEncoding] encoding:NSNonLossyASCIIStringEncoding]);;也可以重写 description 方法。但个人感觉其实没有这个必要。
NSLog(@"%@",[NSString stringWithCString:[[dictionary description] cStringUsingEncoding:NSUTF8StringEncoding] encoding:NSNonLossyASCIIStringEncoding]);
补充:最近在使用 p 命令时,发现 p "U4e3dU5c71" 这种形式打印会报错 error: incomplete universal character name ,发现 u 的大小写是不一样,应该的形式是 p "u4e3du5c71" (四位)或者 p "U00004e3dU00005c71"(八位)。虽然没找到明确文字说明,但可以推论出,小写的是 BMK
p "U4e3dU5c71"
error: incomplete universal character name
u
p "u4e3du5c71"
p "U00004e3dU00005c71"
BMK
description code> 方法),更方便了調試,但其中列印字串時並未做任何處理(如此處的字元轉義)。由於只是方便調試,而且列印特定字串時,呼叫字串的desciption 方法時,會轉義為可讀中文,也就是到具體處理的時候會自動轉義,不用也不應該自己去轉。
NSLog(@"%@",[NSString stringWithCString:[[dictionary description] cStringUsingEncoding:NSUTF8StringEncoding] encoding:NSNonLossyASCEncoding:NSUTF8StringEncoding] encoding:NSNonLossyASCIIStringEncoding]);]);寫description 方法。但個人感覺其實沒有這個必要。 🎜🎜 🎜🎜補充:最近在使用p 指令時,發現p "U4e3dU5c71" 這種形式列印會報錯error: incomplete universal character name ,發現u 的大小寫是不一樣,應該的形式是p "u4e3du5c71" (四位)或p "U00004e3dU00005c71"(八位)。雖然沒找到明確文字說明,但可以推論出,小寫的是 BMK🎜[NSString 與 Unicode]🎜,預設0號平面,缺省前四位0。 🎜🎜 🎜
json轉換為字典,依key值取得資料
iOS 開發小白怒答一枚.先糾正一下, "u8bc4u8bbau6807u9898"是Unicode 編碼, 並非是題主說的"二進制".所以只要把Unicode 解碼轉成中文就可以啦~ 大概有兩個方法可以解決~這個問題~
"u8bc4u8bbau6807u9898"
用線上轉換工具. 百度一搜一堆就不具體舉例子了;
寫一個轉換用的工具類別, 下面貼上程式碼;
- (void)viewDidLoad { [super viewDidLoad]; NSString *unicodeString = @"\u8bc4\u8bba\u6807\u9898"; NSLog(@"%@", [self replaceUnicode:unicodeString]); } // 将 Unicode 编码转换成中文 - (NSString *)replaceUnicode:(NSString *)unicodeStr { NSString *tempStr1 = [unicodeStr stringByReplacingOccurrencesOfString:@"\u" withString:@"\U"]; NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\""]; NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""]; NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding]; NSString* returnStr = [NSPropertyListSerialization propertyListFromData:tempData mutabilityOption:NSPropertyListImmutable format:NULL errorDescription:NULL]; return [returnStr stringByReplacingOccurrencesOfString:@"\r\n" withString:@"\n"]; }
在lldb裡面直接po出來
這確實不是二進制,是unicode 編碼,可以在使用lldb 中使用
p
命令或在shell 中使用echo
命令打印這些編碼,均可打印出可讀的中文。p
命令或在 shell 中使用echo
命令打印这些编码,均可打印出可读的中文。从 iOS 5 开始(没有验证,但早期打印数组和字典均和现在打印对象的显示一致,<名称:内存地址>),打印数组和字典显示出具体的数据结构(
description
方法),更方便了调试,但其中打印字符串时并未做任何处理(如此处的字符转义)。由于只是便于调试,而且打印具体字符串时,调用字符串的desciption
方法时,会转义为可读中文,也就是到具体处理的时候会自动转义,不用也不应该自己去转。非得在控制台显示中文的话可以这样,
NSLog(@"%@",[NSString stringWithCString:[[dictionary description] cStringUsingEncoding:NSUTF8StringEncoding] encoding:NSNonLossyASCIIStringEncoding]);
;也可以重写description
方法。但个人感觉其实没有这个必要。补充:最近在使用
從iOS 5 開始(沒有驗證,但早期打印數組和字典均和現在打印對象的顯示一致,),打印數組和字典顯示出具體的數據結構(p
命令时,发现p "U4e3dU5c71"
这种形式打印会报错error: incomplete universal character name
,发现u
的大小写是不一样,应该的形式是p "u4e3du5c71"
(四位)或者p "U00004e3dU00005c71"
(八位)。虽然没找到明确文字说明,但可以推论出,小写的是BMK
description code> 方法),更方便了調試,但其中列印字串時並未做任何處理(如此處的字元轉義)。由於只是方便調試,而且列印特定字串時,呼叫字串的
desciption
方法時,會轉義為可讀中文,也就是到具體處理的時候會自動轉義,不用也不應該自己去轉。NSLog(@"%@",[NSString stringWithCString:[[dictionary description] cStringUsingEncoding:NSUTF8StringEncoding] encoding:NSNonLossyASCEncoding:NSUTF8StringEncoding] encoding:NSNonLossyASCIIStringEncoding]);]);寫
description
方法。但個人感覺其實沒有這個必要。 🎜🎜 🎜🎜補充:最近在使用p
指令時,發現p "U4e3dU5c71"
這種形式列印會報錯error: incomplete universal character name
,發現u
的大小寫是不一樣,應該的形式是p "u4e3du5c71"
(四位)或p "U00004e3dU00005c71"
(八位)。雖然沒找到明確文字說明,但可以推論出,小寫的是BMK
🎜[NSString 與 Unicode]🎜,預設0號平面,缺省前四位0。 🎜🎜 🎜json轉換為字典,依key值取得資料
iOS 開發小白怒答一枚.
先糾正一下,
"u8bc4u8bbau6807u9898"
是Unicode 編碼, 並非是題主說的"二進制".所以只要把Unicode 解碼轉成中文就可以啦~ 大概有兩個方法可以解決~這個問題~
用線上轉換工具. 百度一搜一堆就不具體舉例子了;
寫一個轉換用的工具類別, 下面貼上程式碼;
在lldb裡面直接po出來