udp接收数据显示中文乱码,大家帮帮忙,指导指导,谢谢
C语言写的UDP通信结构,接收到的数据存在char*,通过回调函数传到外层使用如果接收到的数据为中文时,NSLog打印乱码
解决方法1:使用c语言接口iconv转换编码方式(GBK-UTF8)
在linux使用同样的c库,接收到的数据通过iconv转码,可以得到正常的中文显示
但是在ios中显示不正常,仍然为乱码
解决方法2:使用网上的例子,先将char*转换成NSData,在通过转码
NSData* data=[NSData dataWithBytes:char*a, strlen(a)];
NSStringEncoding gbk=CFStringConverNSStringEncodingToEncoding(kCFStringEncodingGB_2312_80);
NSString* str=[[NSString alloc]initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding];
还是乱码
使用
NSString *str1=[NSString stringWithCString:char*A encoding:gbk];
const char* str2=[str1 cStringUsingEncoding:NSUTF8StringEncoding];
NSLog(@"str2:%s", str2); //结果为乱码
通过网上将char*中文转换的资料测试
char testStr1[20];//="怎么转换编码";
memset(testStr1, 0x0, sizeof(testStr1));
strcpy(testStr1, "怎么转换编码");
NSLog(@"testStr1:%s", testStr1);
NSString *sv=[[NSString alloc] initWithCString:testStr1 encoding:gbk];
NSLog(@"sv:%@", sv);//这种方法在我工程中不能正常显示中文
--------------------编程问答-------------------- 不清楚啊!!!!!! --------------------编程问答-------------------- 没人知道吗? --------------------编程问答-------------------- 在服务器端发送之前把数据转换成UTF8编码试下 --------------------编程问答--------------------
服务器不是我们做的,不能修改服务器的编码格式,现在只能接收之后进行转码,可是尝试了几种方式都是失败的
补充:移动开发 , iPhone