欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

udp接收数据显示中文乱码,大家帮帮忙,指导指导,多谢

更新时间: 2014-01-05 02:36:31 责任编辑: Author_N1

 

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编码试下
--参考方法--
发一段字节流数据的16进制值出来,我试下。
就是把一段数据的16进制值用下面的格式放上来:
ff 09 12 32 34 

然后实际对应的汉字也放上来。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:36:31
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/12016/
本文WWW.DOC100.NET DOC100.NET版权所有。