在我的应用程序中,我从服务器获取了一些字符串值,但我没有得到正确的字符串。
بسيط
这是来自服务器端的字符串,但我得到的是بسÙØ·
我尝试在在线解码器中测试响应字符串:
http://www.cafewebmaster.com/online_tools/utf8_encode
它是UTF-8编码的,但我无法解码iPhone端的字符串。
我看了一下这些Stack Overflow链接作为参考
Converting escaped UTF8 characters back to their original form
unicode escapes in objective-c
utf8_decode for objective-c
但他们都没有帮助。
答案 0 :(得分:1)
我不明白你的问题有以下几点:
对于第一个问题,我将假设服务器已编程为以UTF-8编码发送文本。
如果您使用套接字发送到服务器,现在在iPhone上使用以下内容:
NSString *messageToSend = @"The text in the language you like";
const uint8_t *str = (uint8_t *) [messageToSend cStringUsingEncoding:NSUTF8StringEncoding];
[self writeToServer:str];
函数writeToServer
是将函数发送到服务器的函数。
如果您愿意将数据放在SQLite3数据库中,请使用:
sqlite3_bind_text(statement, 2, [@"The text in the language you like" UTF8String], -1, NULL);
如果您从服务器接收数据(再次使用套接字),请执行以下操作:
[rowData appendBytes:(const void *)buf length:len];
NSString *strRowData = [[NSString alloc] initWithData:rowData encoding:NSUTF8StringEncoding];
我希望这涵盖了你需要的所有案例。
答案 1 :(得分:0)
没有任何来源,很难说出任何结论,但在某些时候,您将UTF-8
编码的字符串解释为ISO-8859-1
,并且(错误地)将其转换为UTF-8
:< / p>
0xD8 0xA8 0xD8 0xB3 0xD9 0x8A 0xD8 0xB7
0xC3 0x98 0xC2 0xA8 0xC3 0x98 0xC2 0xB3 0xC3 0x99 0xC2 0x8A 0xC3 0x98 0xC2 0xB7
所以在某些时候你应该在你的代码中找到一些ISO-8859-1
的引用。找到并删除它。
答案 2 :(得分:0)
已解决此链接中的问题
Different kind of UTF8 decoding in NSString
NSString * string = @“بسÙØ·”;
我试过
[NSString stringWithUTF8String:(char*)[string cStringUsingEncoding:NSISOLatin1StringEncoding]]
这种方法
谢谢。