PHP base64_encode和*nix base64之间有什么区别

psy*_*ott 25 php base64 encoding

PHP base64_encode正在向linux base64命令返回一个不同的字符串.为什么是这样?

PHP:

$ php
<?php
echo base64_encode('test');
?>
dGVzdA==
Run Code Online (Sandbox Code Playgroud)

Linux base64:

$ echo 'test' | base64
dGVzdAo=
Run Code Online (Sandbox Code Playgroud)

kni*_*ttl 44

echo通常在字符串的末尾输出一个新行字符,以禁止使用该-n开关:

$ echo -n 'test' | base64
dGVzdA==
Run Code Online (Sandbox Code Playgroud)

与PHP类似:

$ php
<?php
echo base64_encode("test\n");
?>
dGVzdAo=
Run Code Online (Sandbox Code Playgroud)

  • +1教我一些关于回声的新东西 (2认同)

c69*_*c69 12

在浏览器中打开控制台,输入atob('dGVzdAo='):

http://gyazo.com/68d16f666c394887929408c519ac1b23.png

您的输入中有额外的字符.那就是0x0A(LF).

  • 对于[`atob`](https://developer.mozilla.org/en/DOM/window.atob)来说,这对我来说是新的. (4认同)

bar*_*iir 9

在做回声时它给了我这个:

MacPro:~ bardiir$ echo 'test'
test
MacPro:~ bardiir$ 
Run Code Online (Sandbox Code Playgroud)

我猜你可能在unix中有一个包含的行结尾,因为echo可能会附加一个换行符,即使你将它传递给base64编码也是如此.