Ruby Base64编码的图片不显示

时间:2013-08-20 08:48:29

标签: javascript ruby-on-rails ruby svg base64

我正在尝试在网页中显示Base64编码的SVG图像。图像使用

进行编码
str = Base64.encode64 '<svg> ... </svg>'

并使用

显示
<img src="data:image/svg+xml;base64,"+str >

浏览器不显示图片。但是,如果我使用JavaScript btoa()函数对字符串进行编码并使用

显示它
$("body").append("img").attr("src", "data:image/svg+xml;base64,"+ btoa("<svg> .. </svg>"));

图像显示完美。 对于相同的输入,Ruby输出和JS输出之间也存在一些差异。我也尝试过encode64的strict和urlsafe版本。他们都没有工作。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

Ruby的Base64添加新行来呈现一个文本块而不是一串乱码你想要做的就是删除字符串

str = Base64.encode64('<svg>...</svg>').gsub("\n", '')

然后就像你原来那样把它重新插入你的来源。

<img src="data:image/svg+xml;base64,"+str >