簡體   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