写入SQLite文件的奇怪字符-尝试在SQLlite数据库中存储字节数组

时间:2018-10-14 15:45:06

标签: c# sqlite asp.net-core entity-framework-core

我尝试将文件转换为字节数组,然后将字节数组转换为字符串以存储在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编码问题。但是我找不到解决方法。

0 个答案:

没有答案