爱码哥开发进阶之编码转换(ByteString)

爱码哥开发进阶之编码转换(ByteString)

ByteString类用于字符串在UTF8, GBK等不同编码之间的转换,并且可以进行MD5,Base64,Hex十六进制转换。

方法

爱码哥开发进阶之编码转换(ByteString)

爱码哥开发进阶之编码转换(ByteString)

示例

UTF8初始化


var byteString = new ByteString('汉字');
var result = byteString.toByteArray();
alert(result); // 输出结果:[-26,-79,-119,-27,-83,-105]

说明:“汉字”两个字的UTF8编码为E6B189和E5AD97,转换成字节数组就是[-26,-79,-119,-27,-83,-105]

UTF8转GBK初始化

alert('提示信息');var byteString = new ByteString('汉字', 'gbk');
var result = byteString.toByteArray();
alert(result); // 输出结果:[-70,-70,-41,-42]

说明:imag.js里字符串默认都是UTF8的,可以通过ByteString把UTF8字符串转成GBK。

“汉字”两个字的GBK编码为BABA和D7D6,转换成字节数组就是[-70,-70,-41,-42]

字节数组初始化

var byteString = new ByteString([-26,-79,-119,-27,-83,-105]);
var result = byteString.utf8();
alert(result); // 输出结果:汉字


var byteString = new ByteString([-70,-70,-41,-42]);
var result = byteString.string('gbk');
alert(result); // 输出结果:汉字


UTF8转十六进制字符串

var byteString = new ByteString('汉字');
var result = byteString.hex();
alert(result); // 输出结果:e6b189e5ad97


UTF8转字节数组

var byteString = new ByteString('汉字');
var result = byteString.toByteArray();
alert(result); // 输出结果:[-26,-79,-119,-27,-83,-105]


十六进制字符串转UTF8

var byteString = ByteString.decodeHex('e6b189e5ad97');
var result = byteString.utf8();
alert(result); // 输出结果:汉字


UTF8转Bease64

var byteString = new ByteString('汉字');
var result = byteString.base64();
alert(result); // 输出结果:5rGJ5a2X


GBK转Bease64

var byteString = new ByteString('姹夊瓧', 'gbk');
var result = byteString.base64();

alert(result); // 输出结果:5rGJ5a2X


Bease64UTF8

var byteString = ByteString.decodeBase64('5rGJ5a2X');
var result = byteString.utf8();
alert(result); // 输出结果:汉字


UTF8转MD5

var byteString = new ByteString('汉字');
var result = byteString.md5().hex();
alert(result); // 输出结果:8a97ee1fcddc24870fb66b4b58c41214

说明:md5()方法返回的是ByteString对象。

异常处理

用ByteString转换数据时,如果输入数据有问题会导致异常的发生,如下面的例子:

var byteString = ByteString.decodeHex('Wrong data');
var result = byteString.utf8();
alert(result);


爱码哥开发进阶之编码转换(ByteString)


上面的例子因为decodeHex()处理数据错误而导致异常发生。默认情况下系统会自动捕获这个异常而且会alert()这个异常,如果有异常问题需要在开发调试阶段解决。

如果要在生产环境下避免alert()弹出,可以手动捕获这些异常,如:

try {
var byteString = ByteString.decodeHex('Wrong data');
var result = byteString.utf8();
alert(result);
} catch(ex){

log(ex);
}

上面的例子在加上try {} catch {}之后不会弹出alert()提示框。

爱码哥(iMAG)是一款专门用来开发手机APP的工具软件,它同时具备几大特点:1.跨平台开发的效率工具,大幅降低APP开发门槛;2.爱码哥拥有强大的集成能力,高度模块化、插件化的开发方式使得用户可以在短时间里整合海量功能;3.爱码哥云平台基于云技术为开发者和企业提供一体化(All In One)的完备服务。


分享到:


相關文章: