export function str2utf8(s){ let res=[]; let c=s.codePointAt(0); for(let i=0;c!==undefined;i++,c=s.codePointAt(i)){ console.log(c); if(c<0x80){res.push(c);} else if(c<0x800){ res.push(0b11000000|(c>>>6)); res.push(0b10000000|(c&0b111111)); } else if(c<0x10000){ res.push(0b11100000|(c>>>12)); res.push(0b10000000|((c>>>6)&0b111111)); res.push(0b10000000|(c&0b111111)); } else{ res.push(0b11110000|(c>>>18)); res.push(0b10000000|((c>>>12)&0b111111)); res.push(0b10000000|((c>>>6)&0b111111)); res.push(0b10000000|(c&0b111111)); } } return res; } console.log(str2utf8("$").map(x=>x.toString(16))); console.log(str2utf8("¢").map(x=>x.toString(16))); console.log(str2utf8("€").map(x=>x.toString(16))); console.log(str2utf8("𐍈").map(x=>x.toString(16)));