2013-08-20 63 views
1

我想在網頁中顯示Base64編碼的SVG圖片。該圖像是使用Ruby Base64編碼的圖片不顯示

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的嚴格和urlsafe版本。他們都沒有工作。我該如何解決這個問題?

+0

當您加載頁面時,控制檯中的任何錯誤? – Slicedpan

+0

嘗試指定編碼,例如:'data:image/svg + xml; charset = utf-8; base64,'如果這不起作用,請將您的ruby編碼字符串通過base64解碼器並檢查輸出(缺少字符和這樣)。 – Duopixel

回答

2

Ruby的Base64增加了新線呈現文本,而不是你想要做什麼一串亂碼塊被刪除串

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

回源,你這樣做,然後就陰謀本來。

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

+2

或使用['strict_encode64'](http://ruby-doc.org/stdlib-2.1.1/libdoc/base64/rdoc/Base64.html#method-i-strict_encode64)。 –