0

私は画像を持っています & をBase64使用して変換するJavaScriptC#、2つの異なる値が得られます。これの理由は何ですか?

JavaScript コード

  function LoadSvg() {
            var main = document.getElementById('svgimg');
            var data = main.innerHTML;
            debugger;
            var base64blob = Base64.encode(data);
            alert(base64blob);
            var image2 = document.getElementById('Img2');
            image2.src = 'data:image/svg+xml;base64,' + base64blob;
        }

C# コード

string val=litSvg.Text;
byte[] arr = Encoding.UTF8.GetBytes(val);
string toBaseVal = Convert.ToBase64String(arr);      
ExternalHtml = 
   "<img id=\"dfs\" src=\"data:image/svg+xml;base64," + toBaseVal + "\" />";

JavaScript のmain値と c#valの値は同じです。これはどのように起こりますか?Javaスクリプト出力で同じ値が必要な場合、どうすればそれを行うことができますか?

編集 :

値の値:

<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='470px' height='310px'><line x1='40' y1='10' x2='40' y2='250'style='stroke: rgb(0,0,0); stroke-width: 1' />...

主な値:

 <svg id="svg-code" xmlns="http://www.w3.org/2000/svg" version="1.1" width="470px" height="310px"> <line x1="40" y1="10" x2="40" y2="250" style="stroke: rgb(0,0,0); stroke-width: 1"></line>

O/P 値 :

base64blob : CiAgICAgICAgICAgICAgICA8.....

toBaseVal : PHN2ZyB4bWxucz0naHR0cDov ....

4

2 に答える 2

1

問題はここのスペースです。

svg ファイルから先頭と末尾のスペースを削除します。さらに、余分な空白もすべて削除します。1つ以上の空白を1つの空白に折りたたみ、C#で-次のようにファイルを読み取り+変換します。

byte[] arr = System.IO.File.ReadAllBytes(svf_file);
string toBaseVal = Convert.ToBase64String(arr);

エンコーディングはそのままにしておきます。

1 つのコードは過剰なスペースを含む base64 を計算し、もう 1 つのコードはスペースを含まない (暗黙的にスペースを削除するため) - innerHTMLを読む

于 2013-11-05T10:42:37.190 に答える
1

Javascript デコード バッファの先頭に空白が含まれています

LINEFEED SPACE SPACE SPACE < ...


$ echo "CiAgICAgICAgICAgICAgICA8" | base64 -d | hexdump -C -n 32
00000000  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000010  20 3c                                             | <| 

あなたのC#デコードバッファは正しいです

$ echo "PHN2ZyB4bWxucz0naHR0cDov" | base64 -d | hexdump -C -n 16
00000000  3c 73 76 67 20 78 6d 6c  6e 73 3d 27 68 74 74 70  |<svg xmlns='http|
00000010

どちらも望ましい結果が得られる可能性がありますが、

于 2013-11-05T11:09:09.820 に答える