Как вы можете кодировать строку в Base64 в JavaScript? - PullRequest
702 голосов
/ 29 октября 2008

У меня есть PHP-скрипт, который может кодировать изображение PNG в строку Base64.

Я бы хотел сделать то же самое, используя JavaScript. Я знаю, как открыть файлы, но я не уверен, как сделать кодировку. Я не привык работать с двоичными данными.

Ответы [ 23 ]

5 голосов
/ 29 августа 2013

Что ж, если вы используете dojo, это дает нам прямой способ кодировать или декодировать в base64.

Попробуйте это: -

Для кодирования массива байтов с использованием dojox.encoding.base64:

var str = dojox.encoding.base64.encode(myByteArray);

Для декодирования строки в кодировке base64:

var bytes = dojox.encoding.base64.decode(str);
3 голосов
/ 09 февраля 2019

Вот встроенные функции LIVE DEMO из atob() и btoa() JS:

<!DOCTYPE html>
<html>
  <head>
    <style>
      textarea{
        width:30%;
        height:100px;
      }
    </style>
    <script>
      // encode string to base64
      function encode()
      {
        var txt = document.getElementById("txt1").value;
        var result = btoa(txt);
        document.getElementById("txt2").value = result;
      }
      // decode base64 back to original string
      function decode()
      {
        var txt = document.getElementById("txt3").value;
        var result = atob(txt);
        document.getElementById("txt4").value = result;
      }
    </script>
  </head>
  <body>
    <div>
      <textarea id="txt1">Some text to decode
      </textarea>
    </div>
    <div>
      <input type="button" id="btnencode" value="Encode" onClick="encode()"/>
    </div>
    <div>
      <textarea id="txt2">
      </textarea>
    </div>
    <br/>
    <div>
      <textarea id="txt3">U29tZSB0ZXh0IHRvIGRlY29kZQ==
      </textarea>
    </div>
    <div>
      <input type="button" id="btndecode" value="Decode" onClick="decode()"/>
    </div>
    <div>
      <textarea id="txt4">
      </textarea>
    </div>
  </body>
</html>
2 голосов
/ 15 октября 2018

Вы можете использовать window.btoa и window.atob ...

const encoded = window.btoa('Alireza Dezfoolian'); // encode a string
const decoded = window.atob(encoded); // decode the string

Вероятно, использование способа, которым MDN , может сделать вашу работу лучше всего ... Также принимая Unicode ... используя эти две простые функции:

// ucs-2 string to base64 encoded ascii
function utoa(str) {
    return window.btoa(unescape(encodeURIComponent(str)));
}
// base64 encoded ascii to ucs-2 string
function atou(str) {
    return decodeURIComponent(escape(window.atob(str)));
}
// Usage:
utoa('✓ à la mode'); // 4pyTIMOgIGxhIG1vZGU=
atou('4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode"

utoa('I \u2661 Unicode!'); // SSDimaEgVW5pY29kZSE=
atou('SSDimaEgVW5pY29kZSE='); // "I ♡ Unicode!"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...