uni-app中uni.getUserInfo(OBJECT)获取QQ昵称乱码

uni-app中uni.getUserInfo(OBJECT)获取QQ昵称乱码

uni.getUserInfo(OBJECT)获取QQ的信息,昵称等出现乱码  

原昵称为:♞凭栏听雨  

province:北京  
city:东城  

![图片](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20210402/94fbc8e0307efcc53db032dfcef20a84.png)
9 回复

hx3.1.13版本 bug 已修复

更多关于uni-app中uni.getUserInfo(OBJECT)获取QQ昵称乱码的实战教程也可以访问 https://www.itying.com/category-93-b0.html


使用Hx3.0打包的应用,同样的数据没有乱码
现在Hx的版本为最新的3.1.7

HX 3.1.7和3.1.8测试均未复现。请补充下详细的设备信息,多测几个设备看下,是否存在此问题

管理员修复版本问题,3.0.7uni.getUserInfo获取QQ登录的昵称等不会乱码,3.1.8有这个问题

用的是目前是新版本,3.1.12 2021-5-14更新的 一样是乱码

经过测试发现:如果昵称中含有 “达”,“力”会乱码,改为其它就不会乱码,暂时没有测试到更多其它的汉字。

问题已复现,后续优化,感谢您的反馈!

bug 已确认。 三字节UTF8字符 在小概率场景出现此问题。 稍后版本修复

在uni-app中,使用uni.getUserInfo(OBJECT)获取QQ用户信息时,昵称出现乱码(如“♞凭栏听雨”显示异常),通常是由于字符编码问题导致的。QQ昵称可能包含特殊字符或Unicode字符,而部分平台或设备在解析时未能正确处理。

解决方案:

  1. 检查编码处理:确保返回的数据使用UTF-8编码解析。在uni-app中,网络请求默认使用UTF-8,但某些情况下可能需要显式设置。

    uni.getUserInfo({
      provider: 'qq',
      success: (res) => {
        // 尝试对昵称进行解码或转码处理
        let nickname = decodeURIComponent(escape(res.userInfo.nickname));
        console.log(nickname); // 检查是否解决乱码
      }
    });
    
  2. 使用Base64解码:如果昵称经过编码,可以尝试Base64解码(但需确认QQ返回数据格式)。

    let decodedNickname = atob(res.userInfo.nickname);
回到顶部