2013-03-29 2 views
2

У меня большая проблема: у меня нет такого же результата, если я делаю base64_decode ($ string); в php или если я делаю Base64.decode (string); в андроиде.Android PHP Base64 декодирует с различными результатами

Пример: с этой строкой: WWhiZWWSZpNlaGSTnpljZQ ==

В PHP, результат Yhbee'f «ЭГД«с Z ™.

В андроиде, результат Yhbeefehdce

Я думаю, что есть проблема кодирования, но я не знаю, где выход из моего PHP сервера ISO-8859- 1, я не нахожу, как указать Base64.decode использовать этот тип кодирования.

Помогите пожалуйста. Thx для ответов.

PS: Я не могу прикоснуться к скрипту PHP.

+0

Возможный дубликат http://stackoverflow.com/questions/8340715/base64-decoding-gives-different-result?rq=1 или http://stackoverflow.com/questions/6837650/php-base64-encode- оленья кожа-получить декодированные-на-андроид? RQ = 1. – shadyyx

ответ

0

Вы должны попробовать это:

Base64.decode(content.getBytes("ISO-8859-1"), Base64.DEFAULT); 

Благодаря этому Вы преобразовать входную строку content в ISO-8859-1 закодированного потока байт, который будет декодированным из base64.

+0

thx очень, я потерял почти 2 дня на этом. – user2224706

+1

Добро пожаловать! Вы должны задать здесь два дня назад ;-) – shadyyx

+0

Ребята, стоит отметить, что флаг Base64.DEFAULT добавит «\ n» в конце результата. Чтобы избежать такого поведения, используйте Base64.NO_WRAP –

0

Я думаю, что декодирование в порядке, но Android не применяет правильную кодировку (возможно, utf-8).

Этот текст отображается на HTML-странице? Если да, правильно ли вы используете кодировку ISO-8859-1?

В качестве альтернативы вы также можете переключиться на UTF-8.