2017-01-04 1 views
0

その後、私が得た私はhttps://www.base64encode.org/のようなオンラインサイトをエンコードする場合、それはなぜRuby base64は他と違いますか?

XGJceEMwXHhCM1x4QjlceEREXHhGQ1x4MUNceDEyWEJhbGFuY2UgZGViaXRlZCB3aXRoIDYyLjAgRXhwaXJ5IERhdGUgaXMgMDktMTEtMjAxNiAwOToxMDowMCBSZW1haW5pbmcgQmFsYW5jZSBpcyAxNDkwLjBceDFBXHgwRkRlYml0ZWQgQmFsYW5jZVwiWEJhbGFuY2UgZGViaXRlZCB3aXRoIDYyLjAgRXhwaXJ5IERhdGUgaXMgMDktMTEtMjAxNiAwOToxMDowMCBSZW1haW5pbmcgQmFsYW5jZSBpcyAxNDkwLjAoXHg5OVx4OUNceENFXHhCRlx4MDU= 

を文字列

\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 

を返しましたが、同じ文字列がBase64.encode64とルビー(above_string)でエンコードされたとき:

CMCzud38HBJYQmFsYW5jZSBkZWJpdGVkIHdpdGggNjIuMCBFeHBpcnkgRGF0\nZSBpcyAwOS0xMS0yMDE2IDA5OjEwOjAwIFJlbWFpbmluZyBCYWxhbmNlIGlz\nIDE0OTAuMBoPRGViaXRlZCBCYWxhbmNlIlhCYWxhbmNlIGRlYml0ZWQgd2l0\naCA2Mi4wIEV4cGlyeSBEYXRlIGlzIDA5LTExLTIwMTYgMDk6MTA6MDAgUmVt\nYWluaW5nIEJhbGFuY2UgaXMgMTQ5MC4wKJmczr8F\n 

なぜ私はBase64.decode64(output_from_online)でデコードしようとしたときに、これが別の文字列を生成するのか分かりません\ b \ xC0 \ xB3 \ xB9 \ xDD \ xFC \ x1C \ x12XBalance ...のような出力に特別なスラッシュを追加しましたが、ルビをデコードしようとすると元の文字列を返します。

誰でも私に理由を教えてください2つの異なるエンコーディングがありますか?そして、私はそれが問題はあなたが二重引用符の内側にRubyでその文字列を入れたときにということであるだけのrequirment

答えて

3

であるように私は、単一のスラッシュと、元の文字列を見つけたことができますどのようにルビー

で利用可能なオンラインと同じエンコードすることができますかインタプリタはそれを解析し、バックスラッシュシーケンスをエスケープ文字として解釈します(「エスケープ文字」セクションのhttps://www.tutorialspoint.com/ruby/ruby_strings.htmを参照)。使用しているページはエスケープ文字を解釈しません。

エンコード/デコードされたテキストにバックスラッシュを含めるには、エスケープ文字(\ 'を除く)を解析しない単一引用符をRubyで使用できます。

+0

しかし、その場合にはそれがオンラインから文字列littile少し異なる戻る:XGJceEMwXHhCM1x4QjlceEREXHhGQ1x4MUNceDEyWEJhbGFuY2UgZGViaXRl \ nZCB3aXRoIDYyLjAgRXhwaXJ5IERhdGUgaXMgMDktMTEtMjAxNiAwOToxMDow \ nMCBSZW1haW5pbmcgQmFsYW5jZSBpcyAxNDkwLjBceDFBXHgwRkRlYml0ZWQg \ nQmFsYW5jZVwiWEJhbGFuY2UgZGViaXRlZCB3aXRoIDYyLjAgRXhwaXJ5IERh \ ndGUgaXMgMDktMTEtMjAxNiAwOToxMDowMCBSZW1haW5pbmcgQmFsYW5jZSBp \ ncyAxNDkwLjAoXHg5OVx4OUNceENFXHhCRlx4MDU = \ n個の文字列で、いつそれが持っているオリジナルとルビーによってデコードこのことは同じではないだろう\ n個あることに気づい\\ b \\ xC0 \\ xB3 \\ xB9 \\ xDD \\ xFC \\ x1C \\ x12XBalanceのような二重スラッシュは62で払い戻されます。 – Thorin

+0

唯一の要求であるので、どのようにしてオリジナルスリングを見つけることができます – Thorin

+0

@Thorin 'encode64'は60文字ごとに改行を加えます。代わりに 'strict_encode64'を使うことができます。 – Stefan

関連する問題