繁体   English   中英

使用Php编码到base64会产生与Python 3不同的结果

[英]Encode to base64 with Php gives different result than with Python 3

我试图将Php中的代码转换为Python,它包括使用base64_encode函数对使用base64的chr函数获得的变量进行编码。

这是Php中的代码:

$data = chr(ord('a')+ord('b'));
$data = base64_encode($data);
echo $data;

结果:

ww==

这是我在Python中尝试做的事情:

from base64 import b64encode

data = chr(ord('a')+ord('b'))
data = b64encode(data.encode()) // data.encode() is mandatory or I get an error saying that b64encode require a bytes-like object
print(data)

结果:

b'w4M='

谢谢您的帮助

艾默里克

我不知道这是否是问题的真正答案,但问题是版本3的python字符串是unicode。 所以php代码可以替换:

<?php
$data = chr(ord('a')+ord('b'));
$data = utf8_encode($data);

echo base64_encode($data); //w4M=

或者您可以使用https://www.php.net/manual/en/function.mb-chr.php

因此,要更改python代码以将其作为php工作 - 您需要在latin-1中编码数据:

from base64 import b64encode

data = chr(ord('a')+ord('b')).encode('latin-1')
data = b64encode(data)

print(data) # b'ww=='
print(data.decode()) # ww==

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM