java - PHP/Java for Android 之间的数据编码/解码

标签 java php android base64

我必须对从 PHP 服务器接收到的 base64 编码数据进行解码。

服务器使用“base64_encode”对数据进行编码。

在我的 Android 应用程序中,我使用 android.utils.Base64 类进行解码。

原始加密数据=“†+Ü]M(‡=ñö”
PHP 中的 Base64 编码数据给出 - "hisP3F1NBCgIAocQCD3x9g=="
Android 中的 Base64 编码数据给出 - "4oCgKw/DnF1NBCgIAuKAoRAIPcOxw7Y="

如您所见,Java 编码的字符串比 PHP 编码的字符串长。我需要找出它们的默认编码格式。

如何从两者中获取相同的编码字符串?

Java/安卓代码:

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

最佳答案

在 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 脚本:

文件: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(‡=ñö

关于java - PHP/Java for Android 之间的数据编码/解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15156811/

相关文章:

php - 在mysql中总结多行

php - 使用 jquery、php session 和页面刷新获得良好的过渡效果?

android - FragmentActivity Junit 测试

java - 无法获得与 PostgreSQL 的 JDBC 连接

Java lambda 返回一个 lambda

php - Codeigniter SSH 连接到远程 MySQL 数据库

android - 可以在AsyncTask中重载publishProgress吗?

java - Android Opengl ES 2.0 FrameBuffer 不工作

java - 在java中以有效的方式从数组中返回重复项

java - GlazedList 更新 JTable 中的 EventList