『導(dǎo)言』
iOS開(kāi)發(fā)中,對(duì)于請(qǐng)求網(wǎng)絡(luò)數(shù)據(jù)時(shí)候,經(jīng)常需要處理編碼轉(zhuǎn)碼問(wèn)題?經(jīng)常出現(xiàn)NSUTF8StringEncoding字樣,在NSData和NSString的轉(zhuǎn)換中如何用?
-
NSUTF8StringEncoding編碼與解碼?
- 編碼: 使
漢字** →** 含%的字符串
NSString *nameStr = [[NSString alloc]init];
nameStr = [nameStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
- ** 解碼**:使
漢字← 含%的字符串
NSString *transString = [NSString stringWithString:[string stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
-
NSSData和NSString的相互轉(zhuǎn)換?
- str轉(zhuǎn)data:
initWithData: encoding:
- 用法
NSString *str = @"username=zwj&pwd=123&type=JSON";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
-
data轉(zhuǎn)str:
dataUsingEncoding:- 用法
NSString *str2 = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
-
網(wǎng)址含
漢字如何轉(zhuǎn)碼?str->str
- str轉(zhuǎn)str:
stringByAddingPercentEscapesUsingEncoding:
- 用法:
NSString *str = @"http://120.25.226.186:32812/login2?username=文娟&pwd=520it&type=JSON";
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
-
POST和GET請(qǐng)求,何時(shí)需要轉(zhuǎn)碼?
GET請(qǐng)求:
* 若url的`路徑參數(shù)`含有`漢字`,需要`轉(zhuǎn)碼`;
* 例1:參數(shù)中含有`漢字`為`小碼哥`
NSString *str = @"http://120.25.226.186:32812/login2?username=小碼哥&pwd=520it&type=JSON";
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
-
POST請(qǐng)求:
- 若url的
域名含有漢字,進(jìn)行轉(zhuǎn)碼。 -
HTTPBody請(qǐng)求體:已經(jīng)進(jìn)行了編碼,所以不需要轉(zhuǎn)碼。
例2:
- 若url的
request.HTTPBody = [@"username=小碼哥&pwd=520it&type=JSON" dataUsingEncoding:NSUTF8StringEncoding];
-
總結(jié):
str轉(zhuǎn)data:
initWithData: encoding:
data轉(zhuǎn)str:
dataUsingEncoding:
> * `str`轉(zhuǎn)`str`:
stringByAddingPercentEscapesUsingEncoding:

圖.開(kāi)心一刻
-
鏈接
<1>.NSSData和NSString的相互轉(zhuǎn)換
<2>.iOS開(kāi)發(fā)中,如何轉(zhuǎn)碼字符串NSString或者網(wǎng)址str?
