将 base64 编码的字节转换为在 Javascript 和 C# 中不同的字符串
Converting base64 encoded bytes to string different in Javascript and C#
我有一个图像,当我使用 JavaScript
和 C#
转换为Base64
时,它给了我两个不同的值。 这是什么原因呢?
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 : CiAgICAgICAgICAgICAgICAgICAgICA8.....
toBaseVal : PHN2ZyB4bWxucz0naHR0cDov ....
你的 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
不过,它们都有可能给出预期的结果
这里的问题是空格。
从 svg 文件中删除前导空格和尾随空格。此外 - 删除所有多余的空格,即。将 1+ 空格折叠为一个空格,并在 C# 中 - 像这样读取+转换文件:
byte[] arr = System.IO.File.ReadAllBytes(svf_file);
string toBaseVal = Convert.ToBase64String(arr);
不要管编码。
一个代码使用多余的空格计算 base64,另一个没有(因为它隐式删除它们) - 读取内部HTML
相关文章:
- 可变大小的JavaScript字符串如何成为基元类型
- 如何将angularjs中的javascript字符串输出为循环数组
- 如何使用gump任务将html转换为javascript字符串
- 替换变量时,JavaScript字符串replace()不起作用
- 如何替换JavaScript字符串中除字母和数字之外的所有内容(空格/符号)
- 如何从django中的url解析javascript字符串
- 拆分javascript字符串以获得所需的值
- 使用Bootstrap'在Javascript字符串中的popover插件
- 如何替换javascript字符串中的前三个连字符
- 将JavaScript字符串转换为整数
- jquery/javascript字符串中的撇号
- 正在对java中的javascript字符串进行转义
- 如何在Javascript字符串中添加vaule
- Javascript:字符串中有效的基于数组的替换
- 具有负值的Javascript字符串.slice()
- javascript字符串替换$1(如果它是某个值)
- 将子函数的JavaScript字符串转换为实际函数
- JavaScript字符串中的换行符也保存为.txt
- 将Javascript字符串var传递给HTML href标记
- JavaScript 字符串字母和数字检查