有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

图像的java字节数组被存储为字符串,如何将其返回到字节数组

我使用安卓作为前端,Spring和Hibernate作为后端。我发送图像的字节数组以存储在此实体中:

public class ApplicationUser {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Lob
    @Column(name = "image_bytes", columnDefinition="BLOB")
    private byte[] imageBytes;
}

然而,在H2控制台中,我可以看到它被存储为一个字符串,数百个字符,所以我想字节数组在某种程度上被转换为一个字符串。所以我的问题是:

  • 为什么会这样?为什么它会被存储为字符串?为什么不按原样存储字节数组呢
  • 如果必须将其存储为字符串,那么如何将其解码回正确的字节数组?如果我获取字符串,并执行myStringThatGotReturned.getBytes(),我会得到一个不同的字节数组(因此基本上我不会得到正确的图像)。我怀疑我没有用正确的方式解读它。有没有办法把这个字符串解码回我发送到后端的字节数组

共 (1) 个答案

  1. # 1 楼答案

    您可以尝试以下方法之一:

    byte[] b = string.getBytes();
    byte[] b = string.getBytes(Charset.forName("UTF-8"));
    byte[] b = string.getBytes(StandardCharsets.UTF_8);