我正在尝试使用AES_ENCRYPT加密mySQL数据库的一部分,当然稍后使用AES_DECRYPT检索数据。但是当该字段包含æ,øellerå等特殊字符时,它们会以
的形式返回我一直试图了解原因,但尚未找到解决方案。
首先我将字段类型更改为BLOB:
ALTER TABLE 'table' MODIFY field BLOB
然后我进行加密:
UPDATE 'table' SET field = AES_ENCRYPT(field, '$key')
所有内容都已存储,但在尝试再次提取数据时:
SELECT AES_DECRYPT(field,'$key') AS variable FROM table WHERE....
当PHP中的echo
时,所有特殊字符都显示为我认为我在HTML和mySQL中都覆盖了UTF-8:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
和
mysqli_set_charset($connect,'utf8');
所以将特殊字符存储在mySQL数据库中,只要字段为VARCHAR并且没有进行加密,就可以使用PHP检索和显示它们。我还读到了像BLOB这样的二进制字段中的特殊字符的问题,但我认为我不是第一个尝试加密和存储Æ或Ø的人:)
任何提示都会非常感激!谢谢!