Я пытаюсь кодировать строку в javascript и декодировать ее в php.кодировка base64 в декодировании javascript в php
Я использую этот код, чтобы поместить строку в поле ввода, а затем отправить ее через форму PUT.
document.getElementById('signature').value= b64EncodeUnicode(ab2str(signature));
И этот код для декодирования
$signature=base64_decode($signature);
Здесь есть jsfiddle для страницы кодирования: https://jsfiddle.net/okaea662/
Проблема заключается в том, что я всегда получаю строку 98% правильно, но с некоторыми разные символы. Например: (первая строка строка печатается в InputBox)
|S ÷ ä½m0 × C | и> £ áWÅàUù »¥ ïs7Dþ1Ji% YE {\ ö ° (úýýÁñxçO9Ù¡ ö}XÇIWçβÆü8ú²ðÑOA¤nì6S+̽ i¼?¼ºNËÒo·a©8»eO|PPþBE=HèÑqaX©$Ì磰©b2(Ðç.$nÈR,ä_OX¾xè¥3éÂòkå¾ N,sáW§ÝáV:
ö ~ Å × à < 4) íÇKo¡L¤ < I »Аа (XON # WÙÕGù¾g) Uc)] Q (*} Ip
|S ÷ ä½m0 × C |!? и> £ áWÅàUù» ¥ ïs7Dþ1Ji% YE {\ ö ° (úýýÁñxçO9Ù¡ ö}XÇIWçβÆü8ú²ðÑOA¤nì6S+̽ i¼?¼ºNËÒo·a©8»eO|PPþBE=HèÑ qaX©$Ì磰©b2(Ðç.$nÈR,ä_OX¾xè¥3éÂòkå¾ N ,sá W§ÝáV:
ö ~ Å × à < 4) íÇKo¡L¤ < I »Аа (! XON # WÙÕGù¾g!) Uc)] Q (*}? Ip
Обратите внимание, что 4-й символ отличается и тогда еще один-два. Строка соответствует цифровой подписи, поэтому эти символы делают подпись недопустимой.
Я понятия не имею, что здесь происходит. Есть идеи? Я использую Chrome браузер и UTF-8 кодировку в заголовке и METAS (Firefox, кажется, использует другую кодировку в InputBox, но я буду смотреть эту проблему позже)
EDIT:
Кодирование в base64, видимо, не проблема. Строка с кодировкой base64 в браузере такая же, как на сервере. Если я base64-декодировать его в javascript, я получаю исходную строку, но если я ее декодирую в PHP, я получаю немного другую строку.
EDIT2: Я все еще не знаю, в чем проблема, но я избегал его отправки данных в блобе с помощью ajax.
Так вы вставив двоичные данные и ожидать, что текстовые материалы будут принять их успешно? – zerkms
_ «Я пытаюсь закодировать строку в javascript» _ Кодировать в каком формате? Не знаете, что такое требование? – guest271314
Проблема не в кодировке в JS, ни в расшифровке в PHP.Проблема в том, что вы пытаетесь скопировать и вставить двоичные данные из внешнего источника в HTML-форму. Подход * sane * * заключался бы в том, чтобы * внешний источник * кодировал данные в base64 [или другой 7-битной безопасной кодировке], чтобы гарантировать, что данные пробиваются через систему без проблем. – Sammitch