问题描述:项目中服务端使用的GBK编码,中文字符串传输到客户端后,需要转换成UTF-8编码才能正常显示。
方法一:使用TextDecoder方法
// 先在buffer中取strlen长度的数据,是GBK编码的字符串,buffer是服务器传过来的
var bytes = new Uint8Array(view.buffer, offset, strlen);
// 调用下面的方法直接转换
var str = new TextDecoder('gbk').decode(bytes);
此方法在web环境和微信开发工具上都是没问题的,但是在真机上回报没有TextDecoder方法的错误。
并且这个方法并没有对应的TexEncoder方法,我们还有上传字符串的需求,因此只能考虑别的方法。
方法二:使用iconv-lite库
微信小游戏支持添加npm库,先添加iconv-lite库
// 在控制台进入wechatgame项目根目录,执行以下代码,可以使用默认配置,最后输入"yes"
npm init
// 初始化完成后,安装库
mpm i iconv-lite
// 由于iconv库是基于nodejs写的,而微信缺少相关库,所以这里要再加两个库,不然会报错
mpm i buffer
mpm i string_decoder
装好后有一下内容:

然后打开微信开发工具,打开“详情->本地设置“,勾选“使用npm模块”
打开菜单里面的“工具”,选择“构建npm”,构建完成就可以使用了。

在CocosCreator开发微信小游戏时遇到编码问题,服务端使用GBK编码,需要在客户端将字符串转换为UTF-8显示。文章探讨了两种方法:1. 使用TextDecoder,该方法在真机上不适用;2. 引入iconv-lite库进行编码转换,通过构建npm解决在微信小游戏中的使用问题。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



