123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- //UTF-16转UTF-8
- function utf16ToUtf8(s) {
- if (!s) {
- return
- }
- var i,
- code,
- ret = [],
- len = s.length
- for (i = 0; i < len; i++) {
- code = s.charCodeAt(i)
- if (code > 0x0 && code <= 0x7f) {
- //单字节
- //UTF-16 0000 - 007F
- //UTF-8 0xxxxxxx
- ret.push(s.charAt(i))
- } else if (code >= 0x80 && code <= 0x7ff) {
- //双字节
- //UTF-16 0080 - 07FF
- //UTF-8 110xxxxx 10xxxxxx
- ret.push(
- //110xxxxx
- String.fromCharCode(0xc0 | ((code >> 6) & 0x1f)),
- //10xxxxxx
- String.fromCharCode(0x80 | (code & 0x3f))
- )
- } else if (code >= 0x800 && code <= 0xffff) {
- //三字节
- //UTF-16 0800 - FFFF
- //UTF-8 1110xxxx 10xxxxxx 10xxxxxx
- ret.push(
- //1110xxxx
- String.fromCharCode(0xe0 | ((code >> 12) & 0xf)),
- //10xxxxxx
- String.fromCharCode(0x80 | ((code >> 6) & 0x3f)),
- //10xxxxxx
- String.fromCharCode(0x80 | (code & 0x3f))
- )
- }
- }
- return ret.join('')
- }
- //UTF-8转UTF-16
- function utf8ToUtf16(s) {
- if (!s) {
- return
- }
- var i,
- codes,
- bytes,
- ret = [],
- len = s.length
- for (i = 0; i < len; i++) {
- codes = []
- codes.push(s.charCodeAt(i))
- if (((codes[0] >> 7) & 0xff) == 0x0) {
- //单字节 0xxxxxxx
- ret.push(s.charAt(i))
- } else if (((codes[0] >> 5) & 0xff) == 0x6) {
- //双字节 110xxxxx 10xxxxxx
- codes.push(s.charCodeAt(++i))
- bytes = []
- bytes.push(codes[0] & 0x1f)
- bytes.push(codes[1] & 0x3f)
- ret.push(String.fromCharCode((bytes[0] << 6) | bytes[1]))
- } else if (((codes[0] >> 4) & 0xff) == 0xe) {
- //三字节 1110xxxx 10xxxxxx 10xxxxxx
- codes.push(s.charCodeAt(++i))
- codes.push(s.charCodeAt(++i))
- bytes = []
- bytes.push((codes[0] << 4) | ((codes[1] >> 2) & 0xf))
- bytes.push(((codes[1] & 0x3) << 6) | (codes[2] & 0x3f))
- ret.push(String.fromCharCode((bytes[0] << 8) | bytes[1]))
- }
- }
- return ret.join('')
- }
- function StringToUint8Array(string) {
- var binLen, buffer, chars, i, _i
- binLen = string.length
- buffer = new ArrayBuffer(binLen)
- chars = new Uint8Array(buffer)
- for (var i = 0; i < binLen; ++i) {
- chars[i] = String.prototype.charCodeAt.call(string, i)
- }
- return buffer
- }
- function uuid(len, radix = 16) {
- var chars =
- '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
- var uuid = [],
- i
- radix = radix || chars.length
- if (len) {
- for (i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)]
- } else {
- var r
- uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
- uuid[14] = '4'
- for (i = 0; i < 36; i++) {
- if (!uuid[i]) {
- r = 0 | (Math.random() * 16)
- uuid[i] = chars[i == 19 ? (r & 0x3) | 0x8 : r]
- }
- }
- }
- return uuid.join('')
- }
- var hexCache = {}
- function stringToHex(str) {
- var val = hexCache[str]
- if (val) return val
- for (var i = 0; i < str.length; i++) {
- if (val == '') val = str.charCodeAt(i).toString(16)
- else val += str.charCodeAt(i).toString(16)
- }
- hexCache[str] = val
- return val
- }
- function getBoolean(str, defaultValue) {
- if (typeof str === 'string') return str.toLocaleLowerCase() === 'true'
- else if (typeof str === 'boolean') return str
- else if (typeof str === 'number') return !!str
- else if (str === undefined) return defaultValue
- else return !!str
- }
- function getNumber(str, defaultValue) {
- if (typeof str === 'number') return isNaN(str) ? defaultValue : str
- else if (typeof str == 'string')
- return isNaN(Number(str)) ? defaultValue : Number(str)
- else return defaultValue
- }
- function StringToUint8Array2(str) {
- const encoder = new TextEncoder()
- return encoder.encode(str)
- }
|