编码转换(ByteString)

ByteString类用于字符串在UTF8, GBK等不同编码之间的转换,并且可以进行MD5,Base64,Hex十六进制转换。
:!:ByteString为5.4版本新增功能

方法名 参数 返回值 描述
decodeHex(hex:String) hex:十六进制字符串 ByteString 静态方法,把一个十六进制字符串解析成ByteString
decodeBase64(base64:String) base64:base64字符串 ByteString 静态方法,把一个Base64字符串解析成ByteString
ByteString(string:String) string:字符串 ByteString ByteString类的构造函数,用ByteString封装一个utf8编码的字符串
ByteString(string:String, charset:String) string:字符串
charset:字符串编码
ByteString ByteString类的构造函数,用ByteString封装一个指定编码的字符串
ByteString(data:Array) data:字节数组 ByteString ByteString类的构造函数,用字节数组初始化ByteString
ByteString(data:Array, offset:Integer, byteCount:Integer) data:字节数组
offset:偏移量
byteCount:字节数
ByteString ByteString类的构造函数,用字节数组初始化ByteString,根据offset和byteCount只读取data的一部分进行初始化。
utf8() None String 把ByteString转成UTF8字符串
string(charset:String) charset:编码格式 String 把ByteString转成指定编码格式的字符串
base64() None String 把ByteString转成Base64字符串
base64Url() None String 把ByteString转成Base64 URL字符串
hex() None String 把ByteString转成十六进制字符串
md5() None ByteString 把ByteString转成MD5编码
sha1() None ByteString 把ByteString转成SHA1编码
sha256() None ByteString 把ByteString转成SHA256编码
sha512() None ByteString 把ByteString转成SHA512编码
hmacSha1(key:ByteString) key:ByteString类型的key ByteString 把ByteString转成HmacSHA1编码
hmacSha256(key:ByteString) key:ByteString类型的key ByteString 把ByteString转成HmacSHA256编码
hmacSha512(key:ByteString) key:ByteString类型的key ByteString 把ByteString转成HmacSHA512编码
substring(beginIndex:Integer) beginIndex:起始位置 ByteString 根据起始位置获得一个子的ByteString
substring(beginIndex:Integer, endIndex:Integer) beginIndex:起始位置
endIndex:结束位置
ByteString 根据起始位置和结束位置获得一个子的ByteString
size() None Integer ByteString字节长度
getByte(pos:Integer) post:字节位置 Integer 获取指定位置的字节
toByteArray() None Array 把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初始化

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转Base64

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

● GBK转Base64

var byteString = new ByteString('姹夊瓧', 'gbk');
var result = byteString.base64();
alert(result);  // 输出结果:5rGJ5a2X

● Base64转UTF8

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);


上面的例子因为decodeHex()处理数据错误而导致异常发生。 默认情况下系统会自动捕获这个异常而且会alert()这个异常,如果有异常问题需要在开发调试阶段解决。
如果要在生产环境下避免alert()弹出,可以手动捕获这些异常,如:
try {
    var byteString = ByteString.decodeHex('Wrong data');
    var result = byteString.utf8();
    alert(result);
} catch(ex){
    log(ex);
}    
上面的例子在加上try {} catch {}之后不会弹出alert()提示框。

● Charset参数编码列表

ByteString支持的Charset参数编码列表,大小写可忽略:
ASCII
ISO-8859-1
ISO-8859-2
ISO-8859-3
ISO-8859-4
ISO-8859-5
ISO-8859-6
ISO-8859-7
ISO-8859-8
ISO-8859-9
ISO-8859-10
ISO-8859-11
ISO-8859-12
ISO-8859-13
ISO-8859-14
ISO-8859-15
ISO-2022-JP
ISO-2022-JP-1
ISO-2022-JP-2
ISO-2022-KR
ISO-2022-CN
ISO-2022-CN-EXT
GBK
GB2312 (或GB-2312)
GB18030 (或GB-18030)
UTF7 (或UTF-7)
UTF8 (或UTF-8)
UTF16 (或UTF-16, 或Unicode)
UTF16BE (或UTF-16BE)
UTF16LE (或UTF-16LE)
UTF32 (或UTF-32)
UTF32BE (或UTF-32BE)
UTF32LE (或UTF-32LE)
Big5 (或Big-5)
Big5-HKSCS (或Big-5-HKSCS)
windows1250 (或windows-1250)
windows1251 (或windows-1251)
windows1252 (或windows-1252)
windows1253 (或windows-1253)
windows1254 (或windows-1254)
windows1255 (或windows-1255)
windows1256 (或windows-1256)
windows1257 (或windows-1257)
windows1258 (或windows-1258)
EUC-JP
EUC-KR
KOI8-R
Shift_JIS

  • advance/bytestring.txt
  • 最后更改: 2019/02/21 08:40
  • 由 terry