[英]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.