2014-03-04 3 views
1

나는 이상한 문제 인코딩을 내 String엑스 코드 - UTF-8 문자열 인코딩

예를 들어

:이 로그

utf: ฉันรักคุณ 

에서 완벽하게 작동

NSString *str = @"\u0e09\u0e31\u0e19\u0e23\u0e31\u0e01\u0e04\u0e38\u0e13"; 
NSString *utf = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSLog("utf: %@", utf); 

그러나, 내가 사용하려고 같은 문자열로 JSON에서 파싱 한 문자열 :

//str is string parse from JSON 
NSString *str = [spaces stringByReplacingOccurrencesOfString:@"U" withString:@"u"]; 
NSLog("str: %@, str); 
NSString *utf = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSLog("utf: %@", utf); 

str: \u0e09\u0e31\u0e19\u0e23\u0e31\u0e01\u0e04\u0e38\u0e13 
utf: \u0e09\u0e31\u0e19\u0e23\u0e31\u0e01\u0e04\u0e38\u0e13 

내가하지만, 시간에 대한 답을 찾는 한 로그

에서 작동하지 않았다 여전히 모든 아주 많이 주시면 감사하겠습니다

단서에게이 없다! 감사!

+0

NSString * utf = [str stringByReplacingPercentEscapesUsingEncoding : NSUTF8StringEncoding];하기 전에'[str UTF8String];을 시도 했습니까? –

+0

공백을 만드는 코드를 붙이십시오. –

+0

@HimanshuJoshi 네, 있습니다. 작동하지 않았 음 :/ – user3378387

답변

2

JSON이 반환하는 문자열은 실제로는 다릅니다. 이스케이프 된 백 슬래시가 있습니다 (JSON 문자열을 인쇄 할 때 각 "\"에 실제로 포함 된 내용은 @ "\"입니다).

대조적으로, 수동으로 생성 된 문자열은 처음부터 이미 "ฉัน รัก คุณ"로 구성됩니다. 백 슬래시 문자를 삽입하지 마십시오. @ "\ u0e09"(et. al.)은 단일 코드 포인트입니다.

이 라인

NSString *utf = str; 

및 변하지 않을 것입니다 귀하의 예제의 출력이 라인

NSString *utf = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

을 대체 할 수있다. 문자열 ByReplacingPercentEscapesUsingEncoding : 다른 종류의 이스 케이 핑을 나타냅니다. See here about percent encoding.

실제로 수행해야 할 작업은 유니 코드 코드 포인트의 문자열 표현에 대한 문자열을 구문 분석하는 것입니다. 다음은 가능한 해결책 중 하나 인 Using Objective C/Cocoa to unescape unicode characters에 대한 링크입니다. 그러나 사용하고있는 JSON 라이브러리 (사용중인 경우)를 확인하는 것이 좋습니다. 투명하게 처리 할 수있는 방법을 제공 할 가능성이 높습니다. 예 : JSONkit 않습니다.

+0

두 번째 링크가 완벽하게 작동했습니다. 고맙습니다! 방금 내 목숨을 구했어! – user3378387

+0

안녕하세요 저는 & url을 가지고 있기 때문에 서비스 서버로 전달하면 새로운 매개 변수로 사용하여 해결할 수 있습니다. 제발 말해 줄 수 있니? 감사합니다 @ 자니스 K –