小程序服务器gbk编码,微信小程序实现GBK和UTF-8互转
js虽然有第三方支持的GBK工具,但是小程序没有;而我开发中又需要进行格式的转化,就依据前人的经验做了一份出来。
分为两部分:Decode.js和Encode.js。分别是GBK格式的二进制文件转化为UTF-8的String和反转。
import Encoder from "./encode/Encoder";
import Decoder from "./encode/Decoder";
//实现参考例子
var message = "减肥是一件困难的事情";
//UTF-8转GBK
var gbkArray = Encoder.hexstrToArray(Encoder.stringToGbkHexstr(message));
console.log("gbkArray>>" + gbkArray);
//GBK转UTF-8
var utfStr = Decoder.GBKHexstrToString(Decoder.binaryarrayToHexstr(gbkArray));
console.log("utfStr>>" + utfStr);
文件下载地址:GITHUB
Decoder.js 因为太长,所以只贴出关键代码
/**
* GBK二进制编码集合,转换成标准的javascript String输出
*/
function GBKHexstrToString(input){
if (input.length % 2 !== 0) {
throw new Error('错误的输入:' + input);
}
var output = '';
for (var offset = 0; offset < input.length;) {
var value = input.substring(offset, offset + 2);
offset += 2;
if (value.charAt(0) < '8') {
output += String.fromCharCode(parseInt(value, 16));
continue;
} else {
var low = input.substring(offset, offset + 2);
offset += 2;
value = value + low;
output += String.fromCharCode(GBKTable[parseInt(value, 16)]);
}
}
return output;
}
/**
* 将binaryArray转化成hexString
*
* @param array 输入的binaryArray
* @returns {string} 输出的hexString
*/
function binaryarrayToHexstr (array) {
var output = '';
array.forEach(function (i) {
output += oneByteIntToHex(i);
});
return output.toUpperCase();
};
/***
* 将一个字节的整型转换成16进制
*
* @private
* @param i
* @returns {string}
*/
function oneByteIntToHex (i) {
var output = '';
i = parseInt(i);
output += (i >> 4 & 0x0f).toString(16);
output += (i & 0x0f).toString(16);
return output.toUpperCase();
};
module.exports = {
GBKHexstrToString: GBKHexstrToString,
oneByteIntToHex: oneByteIntToHex,
binaryarrayToHexstr: binaryarrayToHexstr
}
Encode.js
/**
* 标准的Javascript String转换成GBK二进制编码集合输出
* 支持Array/String输入,异步
*/
function stringToGbkHexstr (input) {
var output = '';
for (var offset = 0; offset < input.length; offset++) {
var code = input.charCodeAt(offset) & 0xffff;
if (code <= 0xFF) {
output += intToHex(code);
} else {
output += GBKTable[code];
}
}
return output;
}
/***
* 将一个字节的整型转换成16进制
*
* @private
* @param i
* @returns {string}
*/
function intToHex (i) {
var output = '';
for (; i != 0; i = i >> 8) {
output = oneByteIntToHex(i & 0xff) + output;
}
return output.toUpperCase();
}
/***
* 将一个字节的整型转换成16进制
*
* @private
* @param i
* @returns {string}
*/
function oneByteIntToHex (i) {
var output = '';
i = parseInt(i);
output += (i >> 4 & 0x0f).toString(16);
output += (i & 0x0f).toString(16);
return output.toUpperCase();
};
/**
* HexStr 转 ArrayBuffer
*/
function hexstrToArray (input) {
if (input.length % 2 != 0) {
throw new Error("not support length:" + input.length);
}
var output = new Array();
var index = 0, offset = 0;
for (; offset < input.length;) {
var expected = input.substring(offset, offset + 1);
var hi = (parseInt(expected, 16) & 0xff) << 4;
offset++;
expected = input.substring(offset, offset + 1);
var lo = parseInt(expected, 16) & 0xff;
output[index] = hi + lo;
index++;
offset++;
}
return output;
}
module.exports = {
stringToGbkHexstr: stringToGbkHexstr,
intToHex: intToHex,
hexstrToArray: hexstrToArray
}
小程序服务器gbk编码,微信小程序实现GBK和UTF-8互转相关推荐
- 微信小程序服务器开小差了,微信小程序wx.request请求封装
微信小程序 wx.request RequestTask wx.request(Object object)发起 HTTPS 网络请求. 示例代码 wx.request({ url: 'test.ph ...
- 微信小程序服务器新手教程,微信小程序新手教程上手开发与使用总结
微信小程序新手教程上手开发与使用总结,本篇默认已经成功安装微信小程序工具,来和小编一起看看吧 一.模板 WXML提供模板组件给我们使用,可以在模板定义公用的代码片段,然后在需要引用的地方进行调用. 定 ...
- 微信小程序服务器未响应,微信小程序点击事件失效
想在主页上添加一个搜索功能 但是加上之后发现原有的页面点击事件没有反应了 个人怀疑是input和bindtap互相影响? 有人碰到类似的情况吗 是怎么解决的 {{item}} this is a te ...
- 微信小程序服务器支付sdk,微信小程序之支付后如何调用SDK的异步通知
微信小程序之支付后如何调用SDK的异步通知 发布时间:2021-07-05 10:47:33 来源:亿速云 阅读:57 作者:小新 这篇文章主要介绍微信小程序之支付后如何调用SDK的异步通知,文中介绍 ...
- 微信小游戏服务器数据持久化,微信小程序wx.setStorage数据缓存实现缓存过期时间...
为了项目性能等方面的考虑,有时候有必要为用户经常访问的页面使用缓存机制:在技术上,服务端和前端都有相应的缓存机制.比如传统的session及cookie等等,在微信小程序中,并没有cookie机制,但 ...
- 小程序服务器换肤,微信小程序实现换肤功能
pc或者移动端实现换肤功能还是比较简单的,大致就是需要换肤的css,还有正常的css:把当前皮肤类型存入本地:然后通过js读取并判断当前应该加载哪套css. 由于微信小程序没有操作wxss的api,所 ...
- 微信小程序服务器连接失败,微信小程序在苹果上出现[request:fail 发生了 SSL 错误无法建立与该服务器的安全连接。]错误的解决方案...
由于原本的服务器出故障,在使用临时服务器的时候出现苹果无法加载小程序 出现 request:fail 发生了 SSL 错误无法建立与该服务器的安全连接.的问题 问题原因: 2017年1月1日起,苹果强 ...
- 微信小程序 服务器触发事件,微信小程序组件间通讯与事件
##组件间通讯与事件 一.前言 如果小程序中有可复用的UI且具有一定的功能性,就可以使用自定义组件将其封装起来.(如果仅仅只需要复用UI可使用template)下面介绍父子组件的数据传递方法,以及一个 ...
- 微信小程序服务器错误500,微信小程序配置参数缺少,报错500
开发作者可能在fecshop\appserver\config\fecshop_local_modules\Wx.php文件配置了['home4TipImg'],但是现在默认的最新版本暂时是没有配置的 ...
最新文章
- redis10---Setbit 的实际应用
- mysql存储过程实例_mysql存储过程案例讲解
- 21天学通c语言第四版pdf,21天学通Visual C++ PDF扫描版[116MB]
- fis 详细介绍(mac版) - 12-26没有弄完 - 暂停
- 白鹭引擎制作滚动框,类似div的oveflow
- android button imagebutton 区别,android - 可点击的ImageView和ImageButton之间的区别
- C++设计模式--观察员
- mysql删除树_B-树的删除过程介绍
- 信创终端违规外联案例分析及防控措施
- 美国CSTA K-12计算机科学标准「中文版」转
- 我们期待自己成为一个优秀的软件模型设计者
- [转载]丢掉鼠标-Mac神软Alfred使用手册1_我是亲民_新浪博客
- 音频采样及编解码——LPCM 、ADPCM、G711、G726
- 三步集成美图软件背景虚化景深效果【iOS篇】
- 包裹细胞膜的磁性纳米微载体/负载斑蝥素的巨噬细胞膜包封金属有机框架纳米颗粒的研究
- 【Codeforces】659D Bicycle Race(多边形内角和公式...)
- 二维对流方程matlab求解,二维对流扩散方程的有限元计算方法
- anaconda版本查看,老版本下载。
- kitti LIDAR点云生成鸟瞰图BEV
- UE4安卓客户端UDP协议模拟电脑操作(_杰森大师)
热门文章
- crazyflie2.0使用北通游戏手柄控制thrust,roll,pitch和yaw
- 18年前的风口 峰值用户近1亿:小灵通UT斯达康正式落幕
- 『EasyNotice』在.NET中多渠道告警通知——快速集成邮件/钉钉/飞书/企业微信
- ROS工作空间编译的时候出现类似于Could_not_find_a_package_configuration_file _provided _by该如何解决
- 刘嘉玲 琦琦拍摄SKII新广告
- 华为OD机试真题 C 实现【最长回文字符串】【2023 Q1 | 100分】
- i.MX6ULL终结者Linux 电容触摸屏实验硬件原理图
- mysql 第10章 索引
- SQL update语句加减乘除运
- 关于机器学习的定义的理解