URL güvenli Bankası 64 kodlaması bakarken, ben bir çok standart dışı bir şey olarak buldum. PHP sahip fonksiyonları yerleşik bol sayısına rağmen, URL güvenli Bankası 64 kodlama için bir tane değil. Için manuel sayfasında base64_encode()
, most of the comments suggest using that function, wrapped with strtr()
:
function base64_url_encode($input)
{
return strtr(base64_encode($input), '+/=', '-_,');
}
Ben bu alanda bulabildiğim tek Perl modülü dahili aşağıdaki değişimini gerçekleştirir ki, MIME::Base64::URLSafe (source) olduğunu:
sub encode ($) {
my $data = encode_base64($_[0], '');
$data =~ tr|+/=|\-_|d;
return $data;
}
PHP yaptığı gibi yukarıdaki PHP fonksiyonunun aksine, bu Perl sürümü oldukça ile değiştirerek daha tamamen '=' (eşittir) karakteri, ',' (virgül) düşer. Bir dolgu karakter Eşittir, yani decode üzerine gerektiği gibi Perl modülü değiştirir, ama bu fark iki uygulamaları uyumsuz yapar.
Son olarak, Python fonksiyon urlsafe_b64encode(s) this function 'python base64 url safe' için Google sonuçlarında belirgin gösteren dolgu kaldırmak kadar koymak birine isteyen, çevresinde '=' dolgu tutar :
from base64 import urlsafe_b64encode, urlsafe_b64decode
def uri_b64encode(s):
return urlsafe_b64encode(s).strip('=')
def uri_b64decode(s):
return urlsafe_b64decode(s + '=' * (4 - len(s) % 4))
Burada arzu dolayısıyla ditching veya çeviri karakterlerin '+', '/' arasında ve '=', başka kodlama olmadan bir URL'ye dahil edilebilir bir dize sahip olmaktır. Bir standart tanımlı olmadığından, what is the right way?