cocos UIlabel ios上无法显示带表情微信昵称

问题:
cocos 客户端UILabel 在ios平台显示玩家微信昵称时,遇到带emoji表情昵称显示乱码,安卓可正常显示。

解决方式:

收到服务端推送的玩家信息后,将昵称进行转码(lua例):

function M.utf8_to_unicode(convertStr)
    if type(convertStr)~="string" then
        return convertStr
    end
    local resultStr=""
    local i=1
    local num1=string.byte(convertStr,i)
    
    while num1~=nil do
        local tempVar1,tempVar2
        if num1 >= 0x00 and num1 <= 0x7f then
            tempVar1=num1
            tempVar2=0
        elseif bit.band(num1,0xe0)== 0xc0 then
            local t1 = 0
            local t2 = 0
            t1 = bit.band(num1,bit.rshift(0xff,3))
            i=i+1
            num1=string.byte(convertStr,i)
            t2 = bit.band(num1,bit.rshift(0xff,2))
            tempVar1=bit.bor(t2,bit.lshift(bit.band(t1,bit.rshift(0xff,6)),6))
            tempVar2=bit.rshift(t1,2)
        elseif bit.band(num1,0xf0)== 0xe0 then
            local t1 = 0
            local t2 = 0
            local t3 = 0
            t1 = bit.band(num1,bit.rshift(0xff,3))
            i=i+1
            num1=string.byte(convertStr,i)
            t2 = bit.band(num1,bit.rshift(0xff,2))
            i=i+1
            num1=string.byte(convertStr,i)
            t3 = bit.band(num1,bit.rshift(0xff,2))
            tempVar1=bit.bor(bit.lshift(bit.band(t2,bit.rshift(0xff,6)),6),t3)
            tempVar2=bit.bor(bit.lshift(t1,4),bit.rshift(t2,2))
        end
        resultStr=resultStr..string.format("\\u%02x%02x",tempVar2,tempVar1)
        i=i+1
        num1=string.byte(convertStr,i)
    end
    return resultStr
end

再将返回的字符串传入OC进行解码:

//解码
const char *jsonString = [resultStr UTF8String];   
NSData *jsonData = [NSData dataWithBytes:jsonString length:strlen(jsonString)];
NSString *nickName = [[NSString alloc] initWithData:jsonData encoding:NSNonLossyASCIIStringEncoding];

return nickName

返回的昵称可以在ios设备上正常显示。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,037评论 3 119
  • 学校简介 新加坡美国国际学校(简称SAS)成立于1956年,是新加坡历史最悠久的国际学校。学校拥有现代化的设施,以...
    wangyeahyeah阅读 7,249评论 0 0
  • 01 2017年马上就要过去了,很多人都在写自己的总结,看看即将过去的一年自己有哪些收获,实现了哪些目标。 但是很...
    晓多阅读 14,762评论 160 701
  • 今天跟你在火车上打了好久的电话,很开心,无论什么时候跟你打电话总是很开心,有时候啥都不想去想了,就想跟你一直说话。...
    seiun阅读 1,176评论 0 0
  • 旋! 飘逸惊鸿舞动弦。 歌声响, 舞曲对人弹。
    悠然芬芳阅读 1,027评论 3 3