我尝试将文件转换为字节数组,然后将字节数组转换为字符串以存储在SQLite数据库中。这些文件很小,通常只有10kb的音频文件。
我的问题是写入SQLite数据库的数据看起来像下面的四个字符,而不是10kb的字符串。
���d
该文件存储在IFormFile中,然后转换为字节数组。
[HttpPost]
public async Task<IActionResult> UploadSound(IFormFile SoundFile)
{
// convert to base 64
byte[] fileData = null;
using (var memoryStream = new MemoryStream())
{
await SoundFile.CopyToAsync(memoryStream);
fileData = memoryStream.ToArray();
}
}
然后将字节数组转换为采用UTF8编码的字符串
Sound sound = new Sound();
sound.SoundString = System.Text.Encoding.UTF8.GetString(fileData);
然后使用实体框架将此字符串保存到SQLite数据库
db.Sounds.Add(sound);
db.SaveChanges();
如果我单步执行程序并在保存之前检查sound.SoundString
的值,它将包含完整的10kb字节数组。但是,只有四个���d
字符被写入数据库。
我想知道SQLite是否存在UTF8编码问题。但是我找不到解决方法。