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