我正在使用 PostgreSQL ,并且在从Java代码执行更新语句期间遇到错误。
print(df.groupby(df.time.dt.minute)['Numbers'].mean())
#time
#30.0 24736.000000
#32.0 959.666667
密码输入的代码段为:
ERROR: invalid byte sequence for encoding "UTF8": 0x00
加密功能如下:
StringBuilder encryptionKey = new StringBuilder().append(newPassword).append(userEmail).append(userEmail).append(userEmail);
AdvancedEncryptionStandard aes = new AdvancedEncryptionStandard(encryptionKey.toString().getBytes(StandardCharsets.UTF_8));
newEncryptedPwd = new String(aes.encrypt(newPassword.getBytes(StandardCharsets.UTF_8)));
EntityManager em = EntityManagerUtil.getEntityManager(schemaName);
EntityManagerUtil.beginTransaction(schemaName);
Query query = em.createQuery("UPDATE User um SET um.password=:newPassword WHERE um.loginId=:userID");
query.setParameter("userID", userName);
query.setParameter("newPassword", newEncryptedPwd);
query.executeUpdate();
我已经通过public byte[] encrypt(byte[] plainText) throws Exception
{
SecretKeySpec secretKey = new SecretKeySpec(key,0,16,'AES');
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return cipher.doFinal(plainText);
}
public AdvancedEncryptionStandard(byte[] key)
{
this.key = key;
}
命令检查了client_encoding
,它显示的是UTF-8。
有人可以帮我解决这个问题吗?我浏览了其他主题中提供的建议,但没有帮助。
答案 0 :(得分:0)
0实际上是无效的UTF8。 UTF8包含æ,它包含™,但其中没有一个包含代码点0。
您的问题是您试图存储任意二进制数据,就像它们是UTF8编码的文本一样。别。如果您对某些内容进行加密,则加密将隐藏其本质(用于加密的是作业描述),因此它是整数,您将无法再将其存储在integer
列中,如果是文本,您将无法再将其存储在text
列中。您只有an array of bytes。