SVG to Base64 API 的替代方案是轉換器,直接在瀏覽器本機運作,可將完整的 SVG 文件轉換為 UTF-8 Base64 資料 URL,並將相同格式的 URL 解碼回 UTF-8 SVG 文字,且無須上傳來源。SVG to Base64 轉換器專為這項由操作人員主導的工作而打造:選擇編碼或解碼,貼上完整的 SVG 文件或相符的資料 URL,執行轉換,檢查完整文字,然後複製結果。轉換與剪貼簿存取都在目前的瀏覽器分頁中進行;SVG 或產生的資料 URL 都不會上傳。若要手動轉換,便能避免將資產內容傳送至託管的轉換端點,同時讓工作流程留在開發人員面前。Unicode 來源會先轉換為 UTF-8 位元組,再進行 Base64 編碼,因此重音符號、CJK 字元、表情符號、屬性、標記與換行都會循明確的位元組處理路徑。編碼器會產生完全相同格式的 data:image/svg+xml;base64,,解碼器也接受相同格式。此工具不會預覽、算繪、執行、上傳或清理文件;本機處理並不等於安全判定。請將它視為文字轉換,然後依據目標端的容量限制、內容安全政策與安全規則,在完全相同且受信任的目標位置測試完整複製結果。

本機轉換器適合哪些情況
「SVG to Base64 API 替代方案」一詞可能代表兩種不同需求:避免使用託管的轉換端點,或完全避免程式碼整合。此瀏覽器工具直接處理本機且由操作人員控制的轉換工作。其經過驗證的工作流程為貼上、執行、檢查與複製,因此,需要無人值守呼叫的應用程式應將 API 架構另行分開,不要將此轉換器視為 SDK 或網路端點。
| 需求 | 本機轉換器行為 | 實務決策 |
|---|---|---|
| 讓資產留在本機 | 轉換與剪貼簿存取都留在目前的分頁中,不會上傳 SVG 或產生的 URL | 適合以資料處理為主要考量的情況 |
| 編碼 SVG | 完整 SVG 文字會轉換為完全相同格式的 data:image/svg+xml;base64, URL | 當目標端需要這種精確格式時使用 |
| 解碼 SVG | 只接受相符的 Base64 SVG 資料 URL | 不能用來解碼純 Base64 或 URL 編碼的 SVG |
| 無人值守的應用程式呼叫 | 此互動流程需要手動貼上與複製 | 為自動化請求另行規劃整合方式 |
| 信任處理 | 不會進行算繪、執行或清理 | 另行驗證、清理與保護內容 |
因此,這個轉換器適合一次性開發工作、私密資產處理,以及快速檢查精確的資料 URL。它解決的是文字轉換,而非託管、傳送最佳化、資產驗證或正式環境安全等問題。
不透過遠端 API 轉換 SVG 來源
當受信任的目標端明確要求 SVG Base64 資料 URL 時,請使用下列流程。
- 選擇編碼並貼上完整的 SVG 文件。 請包含開頭的 svg 根元素及其結尾標籤。結構檢查會先移除選用的位元組順序標記與周邊空白,再檢查根元素是否完整。請將來源維持在此工具的 500,000 字元上限內。
- 執行轉換並檢查完整的文字結果。 輸出會使用完全相同的 data:image/svg+xml;base64, 前綴,後接 Base64 內容。請確認完整結果的開頭與結尾都存在。轉換器不會提供 SVG 預覽,因此這項檢查針對的是文字輸出,而非算繪後的外觀。
- 複製完整結果,並在完全相同且受信任的目標端測試。 請檢查目標端的容量限制、內容安全政策、解析規則及其他安全要求。成功轉換只能確認表示格式,不能證明文件安全、有效,或能被每個消費者接受。
若目標端拒絕該值,請分別檢查完整前綴、可能發生的截斷、來源大小、UTF-8 處理及目標端特定限制。如此可區分編碼問題與 SVG 有效性或嵌入政策問題。
從支援的資料 URL 還原文字
只有在輸入已符合轉換器刻意限定範圍的資料 URL 規格時,才選擇反向作業。
- 選擇解碼並貼上完整且相符的資料 URL。 它必須以 data:image/svg+xml;base64, 開頭。解碼器不會猜測純 Base64、URL 編碼的 SVG、其他媒體類型參數、任意資料 URL 或經空白正規化的內容。
- 執行轉換並檢查還原的 UTF-8 文字。 解碼會反向還原 UTF-8 與 Base64 步驟。格式錯誤的 Base64、無效的 UTF-8 位元組序列,以及缺少必要完整 svg 根元素的文字輸入都會遭到拒絕,而不會產生表面成功、實際錯誤的文件。
- 複製還原的文字,並在實際消費者中測試。 請檢查完整文件,並在實際使用它的位置進行驗證。成功解碼可還原文字,但不能證明 SVG 在語法上有效、自足或可安全嵌入。
精確前綴的要求可避免無關資料被解讀為 SVG,並讓往返行為保持確定性。這也意味著,若資料 URL 含有額外參數,必須自行修正,而不能指望工具默默將它正規化。
為何 UTF-8 必須先於 Base64
Base64 是由 RFC 4648 定義的二元轉文字表示法。它處理的是位元組,而非抽象的 Unicode 字元;WHATWG 編碼標準則定義文字如何表示為 UTF-8。因此,包含重音符號、CJK 字元或表情符號的 JavaScript 字串,不能安全地視為 Latin-1 位元組序列。將這類字串直接傳給僅支援 Latin-1 的瀏覽器函式,例如 btoa(),可能導致失敗或破壞非 ASCII 內容。
轉換器使用 TextEncoder 產生 UTF-8 位元組,處理位元組區塊以避免使用過大的引數清單,然後套用 Base64 編碼。這條路徑涵蓋 ASCII、帶重音文字、CJK 字元、表情符號、屬性、巢狀標記、命名空間文字與換行。解碼會以嚴格的 UTF-8 驗證反向執行此流程,因此格式錯誤的序列會產生錯誤,而不會以替代字元及令人誤解的成功狀態取代。
此實作以八個外部測試案例為基礎,涵蓋 ASCII 標記,以及兩位元組、三位元組與四位元組的 UTF-8 字元、屬性、換行、巢狀標記和命名空間文字。其他測試涵蓋多語言往返,以及拒絕錯誤前綴、格式錯誤的文件、格式錯誤的 Base64 與無效的 UTF-8。
結構符合條件不等於完整驗證
根元素檢查刻意設定為結構邊界,而非完整的 XML 或 SVG 驗證器。在處理選用的周邊空白與位元組順序標記後,它會確認貼上的文字包含 svg 根元素與結尾標籤,但不會修復命名空間、元素內容、屬性、參照、尺寸、路徑、樣式或無障礙資訊。
字串可能通過這項邊界檢查,卻仍是無效的 SVG、在不同瀏覽器中有不同算繪結果,或依賴無法取得的資源。請在應用程式、瀏覽器、範本、建置管線或其他確實會使用它的消費者中驗證文件。切勿以成功編碼取代消費者端的驗證。
編碼不會建立信任
Base64 只會改變表示形式。SVG 可能包含指令碼、事件處理器、外部內容、連結、外部資源、濾鏡或其他動態行為,端視其嵌入方式及適用的內容安全政策而定。對文件進行編碼不會移除這些功能,也不會讓結果值得信任。如需更深入瞭解這項差異,請參閱在線使用 SVG to Base64 轉換器是否安全?。
若沒有維護中的清理器,以及專為目標端設計的嵌入政策,請勿將不可信的輸出放入 iframe、object、image 內容、內容安全政策屬性或 DOM。若必須顯示不可信的 SVG,請使用維護中的清理管線與嚴格的提供標頭。即使轉換是在本機進行,單靠編碼也不提供任何保護。
大小與傳送方式的選擇
500,000 字元的來源上限可限制記憶體使用量與主執行緒工作量,但不能保證結果也能容納於其他位置。產生的資料 URL 仍可能超過瀏覽器、資料庫、標頭、QR 碼或建置工具的上限。部署前,請測量完整輸出,並與目標端的實際容量上限比較。
因為四個 Base64 字元代表三個來源位元組,Base64 通常會讓來源位元組增加約三分之一;資料 URL 前綴還會再增加少量篇幅。Unicode 字元也可能需要多個 UTF-8 位元組。SVG 以獨立資源提供時,通常可透過 HTTP 內容編碼有效壓縮;大型的內嵌 Base64 值則可能擴大 HTML 或 CSS、減少獨立快取的機會,並使除錯更困難。
| 傳送方式 | 適用情況 | 主要取捨 |
|---|---|---|
| 內嵌 SVG 資料 URL | 目標端明確需要自足資料值 | 文字較大,且獨立快取與除錯可見性較低 |
| 獨立提供的 SVG | 較大的資產會在多個頁面或元件中重複使用 | 資產可獨立快取,且可能受益於 HTTP 壓縮 |
對於較大且會重複使用的資產,建議選擇獨立快取的 SVG 檔案。請測量實際傳送的結果,不要假定內嵌資料 URL 在每種環境中都會更快或更小。
部署前的最終檢查
- 確認 SVG 是你擁有或信任的內容,且未超過來源上限。
- 驗證來源包含完整的 svg 根元素與結尾標籤。
- 確認編碼使用完全相同且受支援的資料 URL 前綴,並已複製完整內容。
- 在需要確定性 UTF-8 往返檢查時,解碼結果。
- 在完全相同且受信任的目標端,使用其容量限制與內容安全政策測試完整值。
- 在最終消費者中驗證外部參照、Unicode 內容、算繪結果與安全性。