- string类型如何转GB2312格式的ArrayBuffer?
在蓝牙BLE传输过程中,BLE设备只能读取GB2312编码的汉字字符或者ASCII码的字符,我现在想知道Typescript方式编译的小程序中当使用input控件接受到用户输入的汉字时是哪一种编码方式?unicode或是utf-8?还有当直接写在ts文件中的汉字是哪一种编码方式?大概率是unicode吧?现在的问题是,有没有一个接口函数能快速将unicode编码的字符串转换为GB2312编码的number[]再转换为ArrayBuffer发送给BLE设备? 只能用户自己手写一份转换方法? 以下是我刚写的,是否可用? /**将unicode字符映射为GB2312字符*/ static mapToGB2312Char(unicodechar: number) : number{ for(var i = 0;i < uincodeAndGb2312.length;i+=2){ if(uincodeAndGb2312[i] == unicodechar) return uincodeAndGb2312[i+1] } return 0 } /**将GB2312字符映射为unicode字符*/ static mapToUnicodeChar(gb2312char: number) : number{ for(var i = 0;i < uincodeAndGb2312.length;i+=2){ if(uincodeAndGb2312[i + 1] == gb2312char) return uincodeAndGb2312[i] } return 0 } /**unicode字符映射为对应的GB2312字符*/ static getGb2312Chars(unicodechars: number[]) : number[]{ let bts : number[] = [] unicodechars.forEach(c => { var tc = this.mapToGB2312Char(c) if(tc != 0) bts.push(tc)//返回0是映射失败 }) return bts } /**从字符串获取unicode字符集*/ static getUnicodeChars(unicodestr : string): number[]{ if(this.isUtf8String(unicodestr)) return this.getUnicodeCharsFromUtf8(unicodestr) let bts : number[] = [] let nTotalChars = unicodestr.length// total chars to be processed. var nOffset = 0; // processing point on strUtf8 while (nOffset < nTotalChars){ bts.push(unicodestr.charCodeAt(nOffset)) nOffset++ } return bts } /**识别是否是utf8格式字符串*/ static isUtf8String(str: string): boolean { var fc = str.length > 0 ? str.charCodeAt(0) : 0 return (fc & 0x80) == 0 || (fc & 0xE0) == 0xC0 || (fc & 0xF0) == 0xE0 || (fc & 0xF8) == 0xF0 } /**从utf-8中获取unicode字符集*/ static getUnicodeCharsFromUtf8(strUtf8: string): number[]{ let bts : number[] = [] var nTotalChars = strUtf8.length// total chars to be processed. var nOffset = 0; // processing point on strUtf8 var nRemainingBytes = nTotalChars// how many bytes left to be converted var iCode, iCode1, iCode2, iCode3// the value of the unicode. while (nOffset < nTotalChars){ iCode = strUtf8.charCodeAt(nOffset) if ((iCode & 0x80) == 0){ // 1 byte. if (nRemainingBytes < 1)break// not enough data bts.push(iCode & 0x7F) nOffset++ nRemainingBytes -= 1 } else if ((iCode & 0xE0) == 0xC0){ // 2 bytes iCode1 = strUtf8.charCodeAt(nOffset + 1) // not enough data if (nRemainingBytes < 2 || (iCode1 & 0xC0) != 0x80) break// invalid pattern bts.push(((iCode & 0x3F) << 6) | ( iCode1 & 0x3F)) nOffset += 2 nRemainingBytes -= 2 } else if ((iCode & 0xF0) == 0xE0){ // 3 bytes iCode1 = strUtf8.charCodeAt(nOffset + 1); iCode2 = strUtf8.charCodeAt(nOffset + 2); // not enough data if (nRemainingBytes < 3 || (iCode1 & 0xC0) != 0x80 || (iCode2 & 0xC0) != 0x80)break// invalid pattern bts.push(((iCode & 0x0F) << 12) | ((iCode1 & 0x3F) << 6) | (iCode2 & 0x3F)) nOffset += 3 nRemainingBytes -= 3 } else if ((iCode & 0xF8) == 0xF0){ // 4 bytes iCode1 = strUtf8.charCodeAt(nOffset + 1); iCode2 = strUtf8.charCodeAt(nOffset + 2); iCode3 = strUtf8.charCodeAt(nOffset + 3); // not enough data if (nRemainingBytes < 4 || (iCode1 & 0xC0) != 0x80 || (iCode2 & 0xC0) != 0x80 || (iCode3 & 0xC0) != 0x80)break// invalid pattern bts.push(((iCode & 0x0F) << 18) | ((iCode1 & 0x3F) << 12) | ((iCode2 & 0x3F) << 6) | (iCode3 & 0x3F)) nOffset += 4 nRemainingBytes -= 4 } else break// 5 or more bytes -- unsupported } return bts }
2023-04-04 - 小程序shareFileMessage:fail invalid path问题不能分享本地文件?
文件是通过writeFileSync生成的,用户通过小程序写一个txt文件,然后小程序需要把用户编辑好的txt上传服务器,writeFileSync生成的文件uploadFile时直接就是空的,shareFileMessage时直接报错无效的path,就很奇怪要怎么把writeFileSync生成的本地文件上传和分享?
2023-02-09 - 手机Web页面怎么做微信登录,手机自己无法扫码自己怎么弄?
用其他手机web浏览器打开第三方web应用,然后登录时只能扫码登陆,pc情况下可以用手机扫码,但是手机自己打开时怎么扫?
2022-12-09 - APIv3密钥怎么设置?我自己胡编乱造个32个字符串吗?还是怎么
API证书生成后怎么做?pfx文件导入到服务器?其他两个文件干什么用? APIV3密钥让填写,都没说怎么生成,32个字符串就随便乱造个就行了?不会与其他人的秘钥冲突吗?
2022-10-10 - 注册时显示邮箱被占用,登录时提示密码不对,找回密码时提示邮箱不是开放平台邮箱,怎么地?
注册时显示邮箱被占用,登录时提示密码不对,找回密码时提示邮箱不是开放平台邮箱,怎么地?就是不让人用是不是?
2022-09-14 - 我注销过两个小程序,现在这两个相关的邮箱账号无法绑定其他的公众号或者小程序,无法再次注册也无法登陆?
客服电话根本打不通,打了一个小时一直在哪里响音乐,真是令人恶心。 之前以个人名义注册过两个小程序,后来注册了个体工商户,想用个体工商户的名义重新注册小程序, 两个账号已经注销了快一年了,到现在无法再次注册,提示说已经绑定了不能注册, 也不能登录,说已经绑定了什么个人微信号,也无法找回密码,什么都干不了, 用一个新的邮箱注册新的公众号时提示先开启企业微信,然后这个邮箱就成企业微信的邮箱了, 然后企业微信又开通微信公众号再给分配了一个企业微信邮箱名义注册的微信公众号,这也就忍了,最起码能登陆, 然后注册微信开放平台的时候说这个企业微信邮箱不能登录也不能注册,我草,玩呢? 微信公众平台的账号与企业微信账号不一致是不是又要开始提示主体不一致了? 微信公众平台的账号和微信公众号的账号不一致是不是也会提示主体不一致? 就是在这里故意恶心人呢?非要全部一次性全部一个流程下来?只要用过的邮箱就得作废是不是? 你们这里做数据库的程序员都是白吃饭桶吧,这么点脑子都没有,是用脚写代码的吧? 注销的时候不删除邮箱,留着准备泄露隐私呢是吧?
2022-09-13 - 我有两个邮箱注册过小程序和小游戏,我已经主体注销了,但是现在依然不能用这两个邮箱重新注册,怎么弄?
两个邮箱分别是1253343326@qq.com和971849880@qq.com。 这两个邮箱现在我无法注册新的小程序。 还有一件事,就是我的公众号之前主体是个人,我现在准备申请一个个体户,然后重新注册一个公众号再把原来的公众号迁移过去就可以吧,但是我现在没有那么多邮箱,上面的两个邮箱无法重新注册,请@官方 帮忙看一下怎么回事。 这两个邮箱我已经注销了有快半年了。
2021-09-24 - position absolute不生效是什么情况?
我的需求是这样的: 在一个面板上任意位置安放一个image的button,但是现在的问题是position absolute不生效,如下所示: [图片] [图片][图片] 写在style或者wxss中都不会生效,都是全部重叠在一起的,请问大家这是什么情况?
2021-08-24