За последние 24 часа нас посетили 38346 программистов и 1722 робота. Сейчас ищут 653 программиста ...

Как закодировать в base64 без потерь?

Тема в разделе "JavaScript и AJAX", создана пользователем minux, 21 сен 2014.

  1. minux

    minux Активный пользователь

    С нами с:
    14 май 2012
    Сообщения:
    89
    Симпатии:
    1
    На php делается функцией
    Код (PHP):
    1. $var = base64_encode ('хелло ворлд');
    Про игнорирование каких-либо символов в мануалах (php.ru|su|net) не сказано.

    На JS доступны 3 варианта, но (судя по вычитаному на javascript.ru) они просрут часть символов:
    escape() просрет @*/+
    encodeURI() просрет ~!@#$&*()=:/,;?+'
    encodeURIComponent() просрет ~!*()'

    Огорчился, вытер сопли и малость потестил:
    Код (Text):
    1. <script>
    2. var input = "йцукенгшщзхъфывапролджэячсмить~!*()'-_. ";
    3. var output = encodeURIComponent(input);
    4. alert (output);
    5. </script>
    На выхлопе получил
    Код (Text):
    1. %D0%B0%D0%99%D0%B1%C2%86%D0%B1%C2%83%D0%B0%D0%9A%D0%B0%D0%95%D0%B0%D0%9D%D0%B0%D0%93%D0%B1%C2%88%D0%B1%C2%89%D0%B0%D0%97%D0%B1%C2%85%D0%B1%C2%8A%D0%B1%C2%84%D0%B1%C2%8B%D0%B0%D0%92%D0%B0%D0%90%D0%B0%D0%9F%D0%B1%C2%80%D0%B0%D0%9E%D0%B0%D0%9B%D0%B0%D0%94%D0%B0%D0%96%D0%B1%C2%8D%D0%B1%C2%8F%D0%B1%C2%87%D0%B1%C2%81%D0%B0%D0%9C%D0%B0%D0%98%D0%B1%C2%82%D0%B1%C2%8C~!*()'-_.%20
    И вот, они, терзания сомнений...
    На сервере даже без обратного кодирования получил кирилицу, - тут я совсем офигел и решил спросить.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ничего никто не просрёт - раз. Это тебе не музыку жать.
    Второе. encodeURI() кодирует в стандарт для урлов. А base64_encode как ни удивительно в base64.

    Вопрос-то в чем состоит?