Socket.io-client-swift: 服务器返回的data中文乱码 "uname":"阿白" 如何解决呢

Created on 9 Jul 2019  ·  6Comments  ·  Source: socketio/socket.io-client-swift

Most helpful comment

服务器采用 UTF-8 编码,客户端解码:[str stringByRemovingPercentEncoding]。

看了一下服务器和客户端的版本,发现iOS版本在10.0之后 弃用了双重utf-8编码,服务器在2.0以后对编码进行重大修改,目前的项目服务器是1.7.4的,客户端是15.1.0的,所以应该是版本不兼容的问题。也非常感谢你的回复

All 6 comments

服务器采用 UTF-8 编码,客户端解码:[str stringByRemovingPercentEncoding]。

服务器采用 UTF-8 编码,客户端解码:[str stringByRemovingPercentEncoding]。

看了一下服务器和客户端的版本,发现iOS版本在10.0之后 弃用了双重utf-8编码,服务器在2.0以后对编码进行重大修改,目前的项目服务器是1.7.4的,客户端是15.1.0的,所以应该是版本不兼容的问题。也非常感谢你的回复

请问版本不兼容问题如何解决?

服务器采用 UTF-8 编码,客户端解码:[str stringByRemovingPercentEncoding]。

看了一下服务器和客户端的版本,发现iOS版本在10.0之后 弃用了双重utf-8编码,服务器在2.0以后对编码进行重大修改,目前的项目服务器是1.7.4的,客户端是15.1.0的,所以应该是版本不兼容的问题。也非常感谢你的回复
你好 这个问题解决了吗? 我们也会出现偶发性的乱码,没找到解决办法

有没有解决呢?

我是这样处理的,可以有效(我的是iOS源码,非Swift的。Swift我没有测试,仅供参考)
[socket on:@"broadcastingListen" callback:^(NSArray* data, SocketAckEmitter* ack) {
//这里是我自己的代码处理,至于服务器返回的是什么看自己的要求了
for (NSString *dataStr in data[0]) {
//进行乱码的处理
const char *c = [dataStr cStringUsingEncoding:NSISOLatin1StringEncoding];
NSString *jsonPath = [[NSString alloc]initWithCString:c encoding:NSUTF8StringEncoding];
}
}];

Was this page helpful?
0 / 5 - 0 ratings