为什么ruby base64与众不同?

时间:2017-01-04 06:28:27

标签: ruby-on-rails ruby string encoding base64

我有一个字符串

\b\xC0\xB3\xB9\xDD\xFC\x1C\x12XBalance debited with 62.0 Expiry Date is 09-11-2016 09:10:00 Remaining Balance is 1490.0\x1A\x0FDebited Balance\"XBalance debited with 62.0 Expiry Date is 09-11-2016 09:10:00 Remaining Balance is 1490.0(\x99\x9C\xCE\xBF\x05

当我对https://www.base64encode.org/等在线网站进行编码时,会返回

XGJceEMwXHhCM1x4QjlceEREXHhGQ1x4MUNceDEyWEJhbGFuY2UgZGViaXRlZCB3aXRoIDYyLjAgRXhwaXJ5IERhdGUgaXMgMDktMTEtMjAxNiAwOToxMDowMCBSZW1haW5pbmcgQmFsYW5jZSBpcyAxNDkwLjBceDFBXHgwRkRlYml0ZWQgQmFsYW5jZVwiWEJhbGFuY2UgZGViaXRlZCB3aXRoIDYyLjAgRXhwaXJ5IERhdGUgaXMgMDktMTEtMjAxNiAwOToxMDowMCBSZW1haW5pbmcgQmFsYW5jZSBpcyAxNDkwLjAoXHg5OVx4OUNceENFXHhCRlx4MDU=

但是当ruby使用Base64.encode64(above_string)编码相同的字符串时,我得到了:

CMCzud38HBJYQmFsYW5jZSBkZWJpdGVkIHdpdGggNjIuMCBFeHBpcnkgRGF0\nZSBpcyAwOS0xMS0yMDE2IDA5OjEwOjAwIFJlbWFpbmluZyBCYWxhbmNlIGlz\nIDE0OTAuMBoPRGViaXRlZCBCYWxhbmNlIlhCYWxhbmNlIGRlYml0ZWQgd2l0\naCA2Mi4wIEV4cGlyeSBEYXRlIGlzIDA5LTExLTIwMTYgMDk6MTA6MDAgUmVt\nYWluaW5nIEJhbGFuY2UgaXMgMTQ5MC4wKJmczr8F\n

我不确定为什么这会产生不同的字符串,当我尝试通过Base64.decode64(output_from_online)解码而不产生原始字符串时(在\ b \ xC0 \ xB3 \ xB3 \ xB9 \ xDD \等输出中添加了额外的斜杠) xFC \ x1C \ x12XBalance ...)但是当我尝试解码ruby时它会返回原始字符串

任何人都让我知道为什么有两种不同的编码?以及如何编码与ruby

在线可用的相同内容

我怎样才能找到带有单斜杠的原始字符串,因为这是唯一的要求

1 个答案:

答案 0 :(得分:3)

问题在于,当您将该字符串放在Ruby中的双引号内时,解释器会解析它并将反斜杠序列解释为转义字符(请参阅https://www.tutorialspoint.com/ruby/ruby_strings.htm上的转义字符部分)。您正在使用的页面不会解释转义字符。

如果要在编码/解码文本中包含反斜杠,可以在Ruby中使用单引号,它不会解析转义字符(除了\')。

相关问题