我应该使用哪个字符集在java中解码这个字节数组?
我目前正在使用Soap web服务,更准确地说,是恢复在中发送的文件 它正在手动工作: 在SOAPUi中,我确实收到了这个(为了可读性而截断) JVBERi0xLjQKJeLjz9MKMTIgMCBvY[…]我应该使用哪个字符集在java中解码这个字节数组?,java,pdf,utf-8,character-encoding,base64,Java,Pdf,Utf 8,Character Encoding,Base64,我目前正在使用Soap web服务,更准确地说,是恢复在中发送的文件 它正在手动工作: 在SOAPUi中,我确实收到了这个(为了可读性而截断) JVBERi0xLjQKJeLjz9MKMTIgMCBvY[…] dL0luZm8gMTggMCBSL1NpemUgMTk+PgpzdGFydHhyZWYKNjk5OQolJUVPRgo= 我可以在notepad++中粘贴这个字符串,然后单击MIME工具>base 64 Decode,它就会变成一个合适的PDF文件,如下所示(截短,只显示标题) %PDF
dL0luZm8gMTggMCBSL1NpemUgMTk+PgpzdGFydHhyZWYKNjk5OQolJUVPRgo= 我可以在notepad++中粘贴这个字符串,然后单击MIME工具>base 64 Decode,它就会变成一个合适的PDF文件,如下所示(截短,只显示标题) %PDF-1.4%xE2xE3xCFxD3LF 12 0 obj流 因此,可以毫无问题地读取PDF文件 现在的问题是使用java恢复此数据。 我正在接收一个字节数组(下面示例中的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();
}
不幸的是,该文件不能被视为pdf文件
%PDF-1.4%obj流
当我试图检查字节数组中的内容时,console向我显示以下内容:(截断)
%p D F
- 1 . 四,
%
120
我假设windows、notepad++或soapui正在后台做一些事情来猜测该使用什么字符集,但我不确定该怎么做
有人能告诉我如何用java从头开始(意思是从最初的字节数组开始)吗
问候,
皮埃尔
编写器
类)String
构造函数),所以我假设您对Java非常陌生
您的错误是将base64转换为记事本中的二进制数据,然后保存结果,认为它将是有效的二进制数据(这几乎肯定不是,即使它确实有效,也不是您想要的方法)
编写器
类)String
构造函数),所以我假设您对Java非常陌生
您的错误是将base64转换为记事本中的二进制数据,然后保存结果,认为它将是有效的二进制数据(它几乎肯定不是,即使它确实有效,这也不是您想要的方法)。如果调试执行,您会得到什么base64字符串?这和你在记事本++中尝试解码的一样吗?如果是,请在获取字节后再次尝试解码。下一步,您可以检查记事本++使用的是哪种编码!如果调试执行,那么Base64字符串会得到什么?这和你在记事本++中尝试解码的一样吗?如果是,请在获取字节后再次尝试解码。下一步,您可以检查记事本++使用的是哪种编码!谢谢你的评论,卡亚曼。关于我犯的错误和我的java技能有待提高,你是对的:)没问题。不同的编码和格式可能会让您感到困惑,因为您以前从未见过它们。特别是字符集编码。谢谢你的评论Kayaman。关于我犯的错误和我的java技能有待提高,你是对的:)没问题。不同的编码和格式可能会让您感到困惑,因为您以前从未见过它们。特别是字符集编码。