Base64编码字符串不匹配

时间:2014-03-16 15:47:20

标签: java android encoding base64

我很沮丧。我有一个基本的Http授权。为此我设置了一个HttpGet标题。 此标头需要进行Base64编码。我是这样做的:

String acc = uname + ":" + pword;
byte[] a = acc.getBytes();
String header = "Basic " + new String(Base64.encode(a, Base64.DEFAULT));

但是这个编码的字符串不起作用。当我记录标题时,它打印出我想要的相同内容。 它看起来与String h = "Basic c2NodWsZXI6aGVpbmNA==";相同,哪个是工作的。 但是当我比较header.equals(h);header==h这两个false时。 最后,当我将标题设置为header时,它不起作用,但是当我使用h时,它可以正常工作。我猜它有关于字符串编码的问题,但我尝试了.getBytes("UTF-8")和类似的(ASCII,UTF-16)的不同方式,但它们都没有工作。 用户名和密码是普通的字符和数字。

任何人都可以看到错误吗?谢谢 Grevius

2 个答案:

答案 0 :(得分:2)

header.equals(h)返回false表示字符串不相同。 header==h将返回false,因为它们不是相同的引用。

空空间也许?试试header.trim().equals(h.trim())

答案 1 :(得分:0)

尝试使用base64.encodestring(s)