Wpis z mikrobloga

Mam taki kodzik w #javascript :

function utf8_to_b64( str ) {
return window.btoa(encodeURIComponent( escape( str )));
}
function b64_to_utf8( str ) {
return unescape(decodeURIComponent(window.atob( str )));
}

document.title=utf8_to_b64("zółty");

tytuł strony przyjmuje wartość base64: eiUyNUYzJTI1dTAxNDJ0eQ==
kod zamienia znaki w utf8 na base 64 dodatkowo kodując znaki specjalne po za ASCII.

Próbuję teraz przeprowadzić konwersję odwrotną z base64 na utf8 w php jednak uzyskuję zły wynik.

na podstawie funkcji z JS( b64toutf8)użyłem:

wartosc zwrocona przez tutul strony
$pageTitle=base64_decode("eiUyNUYzJTI1dTAxNDJ0eQ==");

$utf8=rawUrlDecode($pageTitle)


w zmiennej dostaję coś takiego: z%F3%u0142ty+g%u0142%u0105b
Co zrobiłem źle ? Potrzebna jest jakaś dodatkowa funkcja dla php ?

#php #javascript #webdev
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@AtakObcych: wszystkie pliki mam kodowane w utf8. Tutaj jest jeszcze taki problem, że php chce użyć wyłącznie do testu, tzn do debugowania odczytanej wartości z base64. Gotowy odczyt będzie już w C++.

Zaraz sprawdzę podaną przez Ciebie bibliotekę.
  • Odpowiedz
@AtakObcych: dobra problem rozwiązany dzięki użyciu innej funkcji zamieniającej utf-8 na base64:

function b64EncodeUnicode(str) {
return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {
return String.fromCharCode('0x' +
  • Odpowiedz