安卓上PHP、Java如何数据编码/解码

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

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

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

原始加密数据=“†+Ü] M(‡=ñö”

PHP中的Base64编码数据提供-“hisP3F1NBCgIAocQCD3x9g ==”

Android中的Base64编码数据给出-“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="

最佳答案

在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(‡=ñö

以上是 安卓上PHP、Java如何数据编码/解码 的全部内容, 来源链接: www.h5w3.com/122416.html

回到顶部