Поскольку DOMStrings - это 16-битные строки, в большинстве браузеров вызов window.btoaстроки Unicode вызовет Character Out Of Rangeисключение, если символ превышает диапазон 8-битного байта (0x00 ~ 0xFF). Есть два возможных способа решения этой проблемы:
первый - экранировать всю строку (с помощью UTF-8, см. encodeURIComponent) и затем кодировать ее;
второй - преобразовать UTF-16 DOMStringв массив символов UTF-8 и затем закодировать его.
Когда собственная TextEncoderреализация недоступна, наиболее легким решением будет использование TextEncoderLite с base64-js .
Обратите внимание, что TextEncoderLite работает только с UTF-8.
https://github.com/solderjs/TextEncoderLitehttps://github.com/beatgammit/base64-jsAPI Overview
Basic Usage
var uint8array = new TextEncoderLite('utf-8').encode(string);
var string = new TextDecoderLite('utf-8').decode(uint8array);
methods
base64js has three exposed functions, byteLength, toByteArray and fromByteArray, which both take a single argument.
byteLength - Takes a base64 string and returns length of byte array
toByteArray - Takes a base64 string and returns a byte array
fromByteArray - Takes a byte array and returns a base64 string
https://github.com/brix/crypto-jshttps://github.com/kazuho/sha1.min.jsb64(sha1())
A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined in FIPS 180-1
Version 2.2-alpha Copyright Paul Johnston 2000 - 2002.
Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
Distributed under the BSD License
See
http://pajhome.org.uk/crypt/md5 for details.
https://gist.github.com/schacon/12703