Странные символы, записанные в файл SQLite - Попытка сохранить байтовый массив в базе данных SQLlite - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь преобразовать файл в байтовый массив, а затем преобразовать байтовый массив в строку для хранения в базе данных SQLite.Эти файлы очень малы, обычно это всего лишь 10 КБ аудиофайлов.

Моя проблема в том, что данные, записанные в базу данных SQLite, выглядят как приведенные ниже четыре символа, а не строка 10 КБ.

���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, он будет содержать полный массив байтов размером 10 КБ.Однако в базу данных записываются только четыре символа ���d.

Мне интересно, есть ли у SQLite проблемы с кодировкой UTF8.Однако я не смог найти решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...