UNPKG

jtc-utils

Version:
38 lines (37 loc) 958 B
import { StandardDecoder, } from "./charset.mjs"; class Utf16beCharset { get name() { return "utf-16be"; } createDecoder(options) { return new StandardDecoder("utf-16be", options); } createEncoder(options) { return new Utf16beEncoder(); } isUnicode() { return true; } isEbcdic() { return false; } } class Utf16beEncoder { canEncode(str) { return true; } encode(str, options) { const out = new Uint8Array(str.length * 2); const limit = options?.limit ?? Number.POSITIVE_INFINITY; for (let i = 0; i < str.length; i++) { const cp = str.charCodeAt(i); out[i * 2] = (cp >>> 8) & 0xff; out[i * 2 + 1] = cp & 0xff; } if (out.length > limit) { return out.subarray(0, Math.floor(limit / 2) * 2); } return out; } } export const utf16be = new Utf16beCharset();