2014-10-16 3 views
2

ios 개발에서 문자열 인코딩 문제가 발생했습니다. 이야기는 다음과 같습니다 :IOS에서 인코딩 사용 문자열

내가 그 가치에 대한 NSDictionary에를 생성 한 후 중국어 일부 값을 생성하고, 사전은 네트워크 요청에 대한 매개 변수로 사용됩니다

enter image description here

- (void)createActivity 
{ 
    NSString *actionTheme = titleF.text; 
    NSString *actionTitle = biaotiF.text; 
    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:actionTheme, @"actionTheme", actionTitle, @"actionTitle",nil]; 
    [self networkrequest:]; 
} 

그런 다음 몇 가지 작업 사전에 대해 수행되었습니다 :

사전을 NSString 유형으로 JSON 형태로 변환하십시오.

NSData* jsonData = [NSJSONSerialization dataWithJSONObject:param options:NSJSONWritingPrettyPrinted error:nil]; 
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

문자열의 중국어 단어 때문에 문자열을 인코딩합니다.

NSString *urlEncodedString = [jsonString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

은 마지막으로 전체 URL은 위의 문자열로 생성했다 :

http://app.ic100.com/action/add?paramJson=%7B%22actionTheme%22%3A%22%E6%88%96%E8%80%85%E5%92%8C%E7%94%9F%E6%B4%BB%22%2C%22actionSite%22%3A%22%E5%8E%A (something like this) 

내가 네트워크 요청에 대한 타사 "ASIFormDataRequest"를 사용하고, 나는 또한 StringEncoding 설정 :

ASIFormDataRequest *requstHttp = [[ASIFormDataRequest alloc] init]; 
[requstHttp setStringEncoding:NSUTF8StringEncoding]; 
.... 

모든 데이터가 서버로 성공적으로 전송되었지만 서버에서 이러한 데이터를 요청한 다음 아이폰에 표시합니다. 그것은 텍스트를 읽을 수 차례 : 나는 조심스럽게 내가 인코딩 또는 문자열을 디코딩, 단지 UTF8 사용한다 모든 장소를 확인했다

enter image description here

. 서버 쪽에서는 다른 인코딩도 사용되지 않습니다. 그리고 내 동료는 안드로이드 플랫폼에서 전송 된 데이터를 테스트했지만 아무런 문제가 없습니다. 그래서 나는 아마도 내가 몇 점을 놓친 것 같아.

조언이 있으십니까?

+0

당신이 URL로 인코딩 JSON 문자열을 왜 그것은 내게 분명하지 않다. 또한 서버에서 데이터를 읽는 데 문제가있는 경우 데이터를 보내는 코드가 아닌 * 코드를 표시하십시오. – Droppy

답변

0

클래스 Base64을 사용하면 문자열을 인코딩하거나 디코딩 할 수 있습니다.

HERE 클래스의 mehode가 인코딩 볼에서 프로젝트에 Base64로 클래스를 추가합니다.

인코딩 :

+ (NSString *)stringWithBase64EncodedString:(NSString *)string; 

- (NSString *)base64EncodedString; 

디코드 :

- (NSString *)base64DecodedString; 
+0

실제 구현이 모두'NSData'에있을 때 왜 카테고리가 필요합니까? 더 편리 할 수도 있지만 반드시 필요한 것은 아닙니다. – Droppy

+0

예 기본 엔코더가 있습니다. –

+0

답변에 어떤 가치가 있습니까? 처음에이 Base-64가이 문제와 관련이있는 것은 무엇입니까? – Droppy