一丶 UTF-8 /GBK
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,又稱萬國碼。由Ken Thompson于1992年創(chuàng)建。現(xiàn)在已經(jīng)標準化為RFC 3629。UTF-8用1到6個字節(jié)編碼UNICODE字符。用在網(wǎng)頁上可以同一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)。
GBK全稱《漢字內(nèi)碼擴展規(guī)范》(GBK即“國標”、“擴展”漢語拼音的第一個字母,英文名稱:Chinese Internal Code Specification
/**
* GBK->UTF8
*/
//方法一 舊方法
NSString *encode1 = [@"%E6%88%91" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"--encode1->%@<------", encode1);
//方法二 新方法
NSLog(@"--encode2->%@<------", [@"%E6%88%91" stringByRemovingPercentEncoding]);
/**
* UTF-8 ->GBK
*/
//方法一 舊方法
NSString *decode1 = [@"我" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"--decode1-->%@<-----", decode1);
//方法二 新方法
NSLog(@"--decode1-->%@<-----", [@"我" stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]);
二丶Unicode/UTF-8
Unicode(統(tǒng)一碼、萬國碼、單一碼)是計算機科學(xué)領(lǐng)域里的一項業(yè)界標準,包括字符集、編碼方案等。Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語言中的每個字符設(shè)定了統(tǒng)一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉(zhuǎn)換、處理的要求。
出現(xiàn)類似這樣格式的字段"\U6df1\U5733\U56fd\U5f00\U884c01\U673a\U623",通常為Unicode碼,轉(zhuǎn)換測試函數(shù)為
/**
* Unicode碼UTF-8
*
* @param unicodeStr Unicode
*
* @return UTF-8
*/
- (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];
//新方法
NSString *returnStr = [NSPropertyListSerialization propertyListWithData:tempData options:NSPropertyListImmutable format:NULL error:NULL];
return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\n"];
}
三丶 GBK/UTF-8
出現(xiàn)類似這樣格式的字段"深圳銀行",通常為GBK碼,轉(zhuǎn)換方式為
NSURL *url = [NSURL URLWithString:@"深圳銀行"];
NSData *responseData = [NSData dataWithContentsOfURL:url];
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:enc];
四丶 UTF-8/GBK2312
在ftp轉(zhuǎn)碼解碼中遇到的問題;
//解碼:從服務(wù)器請求數(shù)據(jù),轉(zhuǎn)成顯示中文
- (NSString *)ChangeToChinessEncode:(NSString *)fileTitleStr
{ if (fileTitleStr != NULL) { char *ReadStoreValue = (char *)[fileTitleStr cStringUsingEncoding:[NSString defaultCStringEncoding]]; if ( ReadStoreValue != NULL ) {
fileTitleStr = [NSString stringWithCString:ReadStoreValue encoding: -2147482062];
} } return fileTitleStr;
}
//編碼:
- (NSString *)encodeString:(NSString *)string;
{
NSString *urlEncoded = (__bridge_transfer NSString *) CFURLCreateStringByAddingPercentEscapes(
NULL,
(__bridge CFStringRef) string,
NULL,
(CFStringRef) @"!*'\"();:@&=+$,?%#[]% ",
kCFStringEncodingGB_18030_2000);
return urlEncoded;
}