要再次编码,解码数据将再次转换为byte[]
,然后转换为编码的base64
字符串。但是base64encodeddata
与plaintextencodeddata
不匹配。请帮助我创建一个完美无瑕的编码解码到重新编码流。
// ENCODING - Byte array -> base64 encoded string
string base64EncodedData = Convert.ToBase64String(model.PDF);
// DECODING - Byte array -> base64 decoded string
var base64DecodedData = Encoding.UTF8.GetString(model.PDF);
// ENCODING AGAIN
byte[] plainTextBytes = Encoding.UTF8.GetBytes(base64DecodedData);
var plainTextEncodedData = Convert.ToBase64String(plainTextBytes);
详细说明,如果这样执行,重新编码与初始编码完全匹配。
var PDF = System.Text.Encoding.UTF8.GetBytes("redgreenblue");
string base64EncodedData = Convert.ToBase64String(PDF);
// DECODING - Byte array -> base64 decoded string
var base64DecodedData = Encoding.UTF8.GetString(PDF);
// ...
但是,我的model.pdf
是从数据库中提取的,如下所示,在这种情况下,重新编码不匹配。
while (reader.Read()) {
model.PDF = reader["PDF"] == DBNull.Value ? null : (byte[])reader["PDF"];
}
%PDF-1.5
%
1 0 obj
<</Type/Catalog/Pages 2 0 R/Lang(en-IN) /StructTreeRoot 8 0 R/MarkInfo<</Marked true>>>>
endobj
2 0 obj
<</Type/Pages/Count 1/Kids[ 4 0 R] >>
endobj
3 0 obj
<</Author(admin) /CreationDate(D:20190724114817+05'30')
/ModDate(D:20190724114817+05'30') /Producer(Microsoft Excel 2013) /Creator(Microsoft Excel 2013) >>
endobj
4 0 obj
<</Type/Page/Parent 2 0 R/Resources<</Font<</F1 6 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 5 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 0>>
endobj
5 0 obj
<</Filter/FlateDecode/Length 171>>
stream
...
%PDF-1.5
%����
1 0 obj
<</Type/Catalog/Pages 2 0 R/Lang(en-IN) /StructTreeRoot 8 0 R/MarkInfo<</Marked true>>>>
endobj
2 0 obj
<</Type/Pages/Count 1/Kids[ 4 0 R] >>
endobj
3 0 obj
<</Author(admin) /CreationDate(D:20190724114817+05'30')
/ModDate(D:20190724114817+05'30') /Producer(��
这2看起来相似的方式,但我的程序似乎正在产生一个损坏的版本,实际的base64解码字符串应该是什么。
PDF是一个ASCII文件,可以包含二进制数据(包括其他编码中的字符串)。因此不能将其读为纯文本。
如果PDF文件包含二进制数据,就像大多数文件一样[...]标题行后面应紧随注释行,注释行至少包含四个二进制字符,即代码为128或更大的字符。
摘自这个答案,其中有更多的信息
问题内容: 我正在使用Jenkins构建我的Maven项目并使用插件发布testng结果。报告中的西里尔符号有问题。看起来像: 。但是在Jenkins控制台中的西里尔文输出是可以的。 我的pom.xml: 项目编码设置为UTF-8。IDE是Intellij IDEA 12.1.3。TestNG 6.8.5。 问题答案: 其实, 应该修复它。
问题内容: 这个问题已经在这里有了答案 : Unicode错误序数不在范围内 (1个答案) 3年前关闭。 我只是无法了解其功能以及如何在python2.7上工作 我尝试了以下声明 直到这里,我认为这很清楚;将Unicode代码转换为相应的utf-8 / 16/32字节字符串。 但是当我编写代码时: 为什么在unicode类型上的含义?为什么第一个(使用utf8)而不是后者可以工作?是因为pytho
问题内容: 如何将函数与MySQL查询结果一起使用?我需要遍历行还是可以将其应用于整个结果对象? 问题答案: 函数需要PHP> = 5.2和 PHP-JSON 包-如所提到的在这里 注意 :自PHP 5.5.0起已弃用,请改用扩展名http://php.net/manual/en/migration55.deprecated.php。
编码是将字符,数字和其他特殊字符等字符序列放入专用格式以进行有效传输的过程。 解码是将编码格式转换回原始字符序列的过程。它与我们通常误解的加密完全不同。编码和解码用于数据通信和存储。编码不应用于传输敏感信息。 URL编码 URL只能使用ASCII字符集通过Internet发送,并且在URL包含除ASCII字符之外的特殊字符的情况下,需要对其进行编码。网址不包含空格,并替换为加号(+)或。 ASCI
主要内容:URL基本组成,哪些字符需要编码,Python实现编码与解码,Python 的标准库urllib.parse模块中提供了用来编码和解码的方法,分别是 urlencode() 与 unquote() 方法。当 URL 路径或者查询参数中,带有中文或者特殊字符的时候,就需要对 URL 进行编码(采用十六进制编码格式)。URL 编码的原则是使用安全字符去表示那些不安全的字符。 安全字符,指的是没有特殊用途或者特殊意义的字符。 URL基本组成 URL 是由一些简单的组件构成,比如协议、域名、端
我试图写一个通用函数,将写一个未压缩和压缩文件(取决于用户输入)。根据zlib,您只需将gzopen模式设置为“w0”(无压缩),但我仍然得到zlib头! 在ZLIB手册中,它提到可以写入原始数据(没有头/尾),但没有说明如何写入。我如何用zlib编写一个普通的(原始编码的)文件?