Tan*_*anc 0 java pdf base64 utf-8 character-encoding
我目前正在使用Soap Web服务,更准确地说,是恢复发送的文件.
它是手动工作:
在SOAPUi中,我确实收到了这个(为了便于阅读而被截断)
JVBERi0xLjQKJeLjz9MKMTIgMCBVY [...]
dL0luZm8gMTggMCBSL1NpemUgMTk + PgpzdGFydHhyZWYKNjk5OQolJUVPRgo =
我可以在notepad ++中粘贴此字符串,然后在单击MIME Tools> base 64 Decode之后,它将成为一个正确的PDF文件,如下所示(截断,只显示标题)
%PDF-1.4%xE2xE3xCFxD3LF 12 0 obj <> stream
因此可以毫无问题地读取PDF文件.
现在问题是使用java恢复这些数据.我收到一个byte数组(下面的示例中的acopier变量)并使用以下代码存储到文件中.我尝试了在网上找到的众多例子中没有任何成功.
还尝试使用UTF-8,ISO-8859-1等.
OutputStreamWriter osw = null;
try{
String filePath="c:\\temp\\";
filePath = filePath.concat("test.pdf");
FileOutputStream fos = new FileOutputStream(filePath,false);
osw = new OutputStreamWriter(fos,"UTF-8");
osw.write("\uFEFF");
osw.write(new String(acopier));
osw.close();
System.out.println("Success");
fos.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
osw.close();
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,文件不能被视为pdf文件,
%PDF-1.4%ãÏÓ120 obj <>流
当我试图检查字节数组中的内容时,控制台向我显示:(截断)
%PDF - 1.4
%????
1 2 0
我认为windows或记事本++或者soapui正在后台做一些事情来猜测要使用什么字符集,但我不知道有什么方法可以去.
可以请有人澄清我如何从头开始在java(意味着从原始的字节数组)?
问候,
皮埃尔
Writer类).因为在你的例子中你试图将二进制数据写为字符数据(并使用String构造函数),我认为你是Java的新手?
你的错误是在记事本中将base64转换为二进制数据,然后保存结果,认为它将是有效的二进制数据(它几乎绝对不是,即使它确实有效,这不是你想要的道路).
| 归档时间: |
|
| 查看次数: |
1016 次 |
| 最近记录: |