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

2 投票
1 回答
1511 浏览
提问于 2025-04-17 12:04

我不确定这个标题是否合适,但...

在我的安卓应用中,我正在尝试验证一个签名字符串。

我的方法是,如果我直接把签名字符串和签名复制粘贴到我的Django/Python方法中,它是可以工作的(这些字符串是我从logcat中获取的)。

但是,当我试图把这些数据真正发送到服务器时,它总是显示未验证。

我尝试过用 .encode('ascii') 和 .encode('utf_8') [只是随便试试这些东西],但都没有成功。

有什么建议吗?

1 个回答

2

你需要在发送和接收的两端都明确进行编码和解码,这样才能确保数据的正确性。在你的安卓应用中,首先要把字符串转换成UTF-8格式的字节数组,可以用getBytes("UTF-8")这个方法。然后,计算这个字节数组的签名。接着,我会把得到的字节数组(消息和签名)用Base64编码,这样就能得到一串没有空格的ASCII字符,这样在传输过程中就不会出问题。

在Python那边,做相反的操作。先用Base64解码消息和签名。然后为消息字符串计算签名,并和接收到的签名进行比较。(记住,在Python 3.x之前,“字符串”其实是字节数组,而“unicode”才是Java中的字符串。)最后,用message.decode('utf-8')来解码消息字节数组,这样就能得到你在安卓端开始时的内容。

撰写回答