gpt4 book ai didi

java - 我应该使用哪个字符集来解码java中的这个字节数组?

转载 作者:行者123 更新时间:2023-12-01 07:54:34 25 4
gpt4 key购买 nike

我目前正在使用 Soap Web 服务,更准确地说,正在恢复其中发送的文件。

它正在手动工作:

在 SOAPUi 中,我确实收到了这个(为了便于阅读而被截断)

JVBERi0xLjQKJeLjz9MKMTIgMCBvY [...]
dL0luZm8gMTggMCBSL1NpemUgMTk+PgpzdGFydHhyZWYKNjk5OQolJUVPRgo=

我可以将此字符串粘贴到 Notepad++ 中,然后单击“MIME工具”>“base 64解码”后,它会变成一个正确的PDF文件,如下所示(已截断,仅显示标题)

%PDF-1.4 %xE2xE3xCFxD3LF 12 0 obj <>stream

因此可以毫无问题地读取 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 %âãÏÓ 12 0 obj <>stream

当我尝试检查字节数组中的内容时,控制台向我显示:(截断)

% P D F - 1 . 4

% ? ? ? ?

1 2 0

我认为Windows或notepad++或soapui正在后台做一些事情来猜测要使用什么字符集,但我不确定该走哪条路。

请有人澄清我如何在java中从头开始(意思是从原始字节数组)?

问候,

皮埃尔

最佳答案

  1. 获取原始(Base64)字符串数据
  2. 使用您首选的 Base64 解码器将其转换为字节(对于 Java 来说有很多)
  3. 将字节写入文件。作为字节,而不是作为字符数据(即没有Writer类)。

由于在您的示例中您尝试将二进制数据写入字符数据(并使用 String 构造函数),我假设您对 Java 还很陌生?

你的错误是在记事本中将base64转换为二进制数据,然后保存结果,认为它是有效的二进制数据(它几乎肯定不是,即使它确实有效,这也不是你想要的道路)。

关于java - 我应该使用哪个字符集来解码java中的这个字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31804337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com