특히 인코딩을 사용하여 서버에서 일부 텍스트 메시지를 검색하는 데 문제가 있습니다. 메시지는 여러 언어로 제공 될 수 있으므로 (예 : 악센트, 일본어, ...) 이모티콘을 포함 할 수 있습니다.문자열 인코딩 및 이모티콘 관련 문제
정보가 담긴 JSON
으로 메시지를 가져옵니다.
(lldb) po dataMessages
<__NSCFArray 0x14ecc7f0>(
{
author = "User 1";
text = "Hier, c'\U00c3\U00a9tait incroyable";
},
{
...
}
)
(lldb) po [[dataMessages objectAtIndex:0] objectForKey:@"text"]
Hier, c'était incroyable
내가 함께 올바른 텍스트를 얻을 수 있어요 : 메시지 이모티콘이 포함 된 경우
const char *c = [[[dataMessages objectAtIndex:indexPath.row] objectForKey:@"text"] cStringUsingEncoding:NSWindowsCP1252StringEncoding];
NSString *myMessage = [NSString stringWithCString:c encoding:NSUTF8StringEncoding];
그러나,하는 NULL
값을 반환 cStringUsingEncoding:
여기에 일부 로그의 예입니다.
서버에 대한 제어권이 없으므로 메시지가 전송되기 전에 인코딩을 변경할 수 없습니다.
'AFNEtworking' 라이브러리에서'AFHTTPRequestOperation' 메소드로'dataMessage'를 받았습니다. 'dataMessage'는 내 서버에서 반환되는 객체이며, 알 수 있듯이 이미 문자열입니다. 그래서 나는'initWithData : encoding :'을 사용하지 않는다. – zbMax