Подтвердить что ты не робот

Кодирование/декодирование данных между php/java для android

Мне нужно декодировать кодированные base64 данные, полученные с php-сервера.

Сервер использует "base64_encode" для кодирования данных.

В моем приложении для Android я использую класс android.utils.Base64 для декодирования.

исходные зашифрованные данные = "† +? Ü] M (‡? = ñö"

Данные кодирования Base64 в php дают...... - "hisP3F1NBCgIAocQCD3x9g =="
Данные кодировки Base64 в android дают - "4oCgKw/DnF1NBCgIAuKAoRAIPcOxw7Y ="

Как вы можете видеть, строка с кодировкой java длиннее, чем закодированная php. Пожалуйста, дайте свои ценные советы. Мне нужно узнать их форматы кодировки по умолчанию.

Как получить одну и ту же закодированную строку из обоих.?

код java/android:

String encrypted = "†+Ü]M(‡=ñö";
byte[] encoded = Base64.encode(encrypted.getBytes(), Base64.DEFAULT);
String str = new String(encoded); //str = "4oCgKw/DnF1NBCgIAuKAoRAIPcOxw7Y="  
4b9b3361

Ответ 1

Попробуйте это на Java: это даст вам длинную версию строки (UTF-8)

byte[] encoded = Base64.encode(encrypted.getBytes("UTF-8"), Base64.DEFAULT);
String str = new String(encoded, "UTF-8");

Обновлено:

Попробуйте это в Java: это даст вам короткую версию строки (CP1252)

// This should give the same results as in PHP
byte[] encoded = Base64.encode(encrypted.getBytes("CP1252"), Base64.DEFAULT);
String str = new String(encoded, "CP1252");

Альтернативно попробуйте этот PHP Script:

file: test.php

<?php

echo base64_encode($_GET['str'])." Default UTF-8 version<br />";
echo base64_encode(iconv("UTF-8","CP1252",$_GET['str']))." CP1252 Version <br />";

?>

usage: http://[SOMEDOMAIN]/test.php?str=†+Ü]M(‡=ñö