当前位置:编程学习 > wap >>

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编码试下 --------------------编程问答--------------------
引用 3 楼 hslinux 的回复:
在服务器端发送之前把数据转换成UTF8编码试下


服务器不是我们做的,不能修改服务器的编码格式,现在只能接收之后进行转码,可是尝试了几种方式都是失败的
补充:移动开发 ,  iPhone
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,