PHP的decode64与Ruby的decode64有着奇怪的不同

时间:2012-08-19 05:34:42

标签: php ruby

Ruby的

Base64.decode64('OVUP/PZrLzoZpaeQga/TpK9xeJAOuTTbUzm9NplDuhSUMkklPtDeDQDgidUEIX+ijxe80EI').length

返回51。

PHP的

strlen(base64_decode('OVUP/PZrLzoZpaeQga/TpK9xeJAOuTTbUzm9NplDuhSUMkklPtDeDQDgidUEIX+ijxe80EI'))

返回53。

为什么?

1 个答案:

答案 0 :(得分:1)

在Ruby中解码,结果是:

"9U\x0F\xFC\xF6k/:\x19\xA5\xA7\x90\x81\xAF\xD3\xA4\xAFqx\x90\x0E\xB94\xDBS9\xBD6\x99C\xBA\x14\x942I%>\xD0\xDE\r\x00\xE0\x89\xD5\x04!\x7F\xA2\x8F\x17\xBC" 

如果您在PHP中看到额外的字符,可能是因为它没有完全正确编码。对此进行解码和重新编码会产生不同的字符串:

"OVUP/PZrLzoZpaeQga/TpK9xeJAOuTTbUzm9NplDuhSUMkklPtDeDQDgidUE\nIX+ijxe8\n"

这可能与原版略有不同,可能不应该,并解码为相同的东西。

0EI部分可能不完整,并被Ruby解码器拒绝。