Java字符串到Python字符串编码“错误”

时间:2012-01-31 22:57:53

标签: java android python string encoding

不确定这是否是最好的标题,但是......

在我的Android应用程序中,我正在尝试验证已签名的字符串。

如果我将signedString和Signature直接复制并粘贴到我的Django / Python方法中(我从我的logcat中获取这些字符串),我的方法就可以了。

但是当我尝试将这些数据实际发送到服务器时,总是会说它没有经过验证。

我试过.encode('ascii')和.encode('utf_8')[只是盲目地尝试这些事情]并没有任何效果。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您应该在两端使显式编码和解码只是为了确保。因此,在您的Android应用中,首先使用getBytes("UTF-8")将String编码为UTF-8字节。计算此字节数组的签名。然后,我将生成的字节数组(消息和签名)编码到Base64中,以获得很好的ASCII块,没有任何空格可以在网络上的任何编码中存活。

在Python方面,反过来。 Base64-decode消息和签名。计算消息字符串的签名并与接收的签名进行比较。 (请记住,在3​​.x之前的Python中,“string”实际上是一个字节数组,而“unicode”是Java中的字符串。)然后使用message.decode('utf-8')解码消息字节数组以获取你在Android方面的开始。