VDS за 300р от нашего партнера SpaceWeb
[45]
25 Сен 2012, 11:13

Аналоги PHP функций base64_decode и base64_encode

Привет!

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

Есть ли аналоги PHP функций base64_decode и base64_encode в JavaScript?

#javascript

Комментарии (1)
fullzilla 26.09.2012 11:24

function base64_decode( data ) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';

do {

h1 = b64.indexOf(data.charAt(i++));
h2 = b64.indexOf(data.charAt(i++));
h3 = b64.indexOf(data.charAt(i++));
h4 = b64.indexOf(data.charAt(i++));

bits = h1<<18 | h2<<12 | h3<<6 | h4;

o1 = bits>>16 & 0xff;
o2 = bits>>8 & 0xff;
o3 = bits & 0xff;

if (h3 == 64)     enc += String.fromCharCode(o1);
else if (h4 == 64) enc += String.fromCharCode(o1, o2);
else               enc += String.fromCharCode(o1, o2, o3);

} while (i < data.length);

return enc;
}

function base64_encode( data ) {

var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';

do {
o1 = data.charCodeAt(i++);
o2 = data.charCodeAt(i++);
o3 = data.charCodeAt(i++);

bits = o1<<16 | o2<<8 | o3;

h1 = bits>>18 & 0x3f;
h2 = bits>>12 & 0x3f;
h3 = bits>>6 & 0x3f;
h4 = bits & 0x3f;

enc += b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
} while (i < data.length);

switch( data.length % 3 ){
case 1:
enc = enc.slice(0, -2) + '=='; break;
case 2:
enc = enc.slice(0, -1) + '=';  break;
}

return enc;
}

Но у них проблемы с кириллицей.
+3

Добавить комментарий

Войдите, чтобы написать о чем-нибудь...
Вход Регистрация
Web.onRails
Здесь вы можете спросить или написать обо всём, что касается Веб-разработки.
написать о чем-нибудь...
Метки:
Лучшее
[52]
16 Окт 2011, 15:38
Вывести все элементы POST
[просмотров 13412]
[74]
31 мая 2011, 11:48
Python проверка существования переменной
[просмотров 9179]
[4]
10 Окт 2018, 15:33
Как запретить просмотр сайта по IP?
[просмотров 8815]
[100]
19 Дек 2014, 16:16
User-agent для Internet Explorer 11
[просмотров 8101]
[124]
21 Июл 2011, 14:04
Python Imaging Library (PIL)
[просмотров 6793]
[58]
29 мая 2012, 12:08
Узнать версию PHP из командной строки
[просмотров 4925]
[315]
16 Июл 2011, 20:03
Python работа с MySQL
[просмотров 4896]

Вести с Хабра